2

私はいくつかのパフォーマンス テストを行っており、ネットワークを介さずにリソース メソッドを呼び出せるようにしたいと考えています。URL を生成するためのフレームワークが既にあり、それを再利用できるようにしたいと考えています。

たとえば、URL が www.example.com:8080/resource/method の場合、それが呼び出すリソース メソッドへの参照を取得して、ネットワーク レベルの HTTP リクエストを作成せずにリソース メソッドを実行できるようにします。つまり、以下の例では、URL "www.frimastudio.com:8080/time" を使用して getServerTime() メソッドへの参照を取得し、直接呼び出すことができます。

Jersey (または他の何か?) はこれを行う方法を提供していますか、それとも、呼び出したい特定の Resource クラスをインポートしてインスタンス化する必要がありますか? 前もって感謝します!

4

2 に答える 2

0

Jersey コードを見ると、これは不可能のようです。検索は によって実行されます。HttpMethodRule.Matcherこれは、 を実装するためだけに使用されるプライベート クラスHttpMethodRule.acceptです。

までのすべてが独自のメソッドに取り込まれ、ユーザーに公開される可能性があるようですacceptif (s == MatchStatus.MATCH) {

于 2016-01-27T16:44:29.117 に答える
0

はい、jersey はルート構成を許可する RESTful API です (注釈付きのみ)

例 :

package com.frimastudio.webservice.controller.route;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.joda.time.DateTime;

import com.frimastudio.webservice.controller.representation.Time;

@Path("/time")
@Produces(MediaType.APPLICATION_JSON)
public class TimeResource
{

    public TimeResource()
    {
    }

    @GET
    public Time getServerDate()
    {
        return new Time(new DateTime());
    }

}

Time が Jackson 表現である場合:

package com.frimastudio.webservice.controller.representation;

import org.hibernate.validator.constraints.NotEmpty;
import org.joda.time.DateTime;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Time
{
    @NotEmpty
    @JsonProperty
    private String date;

    public Time()
    {
        // Jackson deserialization
    }

    public Time(String date)
    {
        super();
        this.date = date;
    }

    public Time(DateTime date)
    {
        super();
        this.date = date.toString();
    }
}
于 2013-06-26T17:32:10.913 に答える