9

を使用して RESET サービスを表すインターフェイスがあるとします。

public interface BookResource {

     @GET
     @Path("/book/isbn/{isbn}/")
     @Produces(value = { MediaType.APPLICATION_XML })
     public ClientResponse<Book> getBookByIsbn(@PathParam("isbn") String isbn, @QueryParam("releaseStatus") String releaseStatus);

}

Web アプリケーションで Jersey を JAX-RS プロバイダー/REST フレームワークとして使用する必要がある場合、実際のサービス実装へのプロキシを作成するにはどうすればよいですか。

これは、RESTEasy/Spring 統合で簡単に実行できます。つまり、JAX-RS インターフェースをラップせずに直接使用でき、適切なボイラー プレートで呼び出しを行うことができます。

基本的に、私は次のものに相当するジャージーを探しています: -

<bean id="bookResource" class="org.jboss.resteasy.client.spring.RestClientProxyFactoryBean">
    <property name="serviceInterface" value="my.company.book.service.BookResource" />
    <property name="baseUri" value="http://localhost:8181/books-service/" />
</bean>

私はこれをグーグルで検索するのに最後の1時間を費やしましたが、Jerseyの標準クライアントAPIに戻り続けています. 誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

10

このリンクはより実用的なようです: http://blog.alutam.com/2012/05/04/proxy-client-on-top-of-jax-rs-2-0-client-api/

// configure Jersey client
ClientConfig cc = new ClientConfig().register(JacksonFeature.class)
            .register(AnotherFeature.class)
            .register(SomeFilter.class);
Client resource = ClientBuilder.newClient(cc);
// create client proxy
ServiceInterface proxy = WebResourceFactory.newResource(ServiceInterface.class,
            resource.target(ServiceURI));

// invoke service
MyType result = proxy.someMethod();

Maven プロジェクトの場合、次の依存関係が必要になります。

    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-proxy-client</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>${jersey.version}</version>
    </dependency>
于 2013-10-10T08:58:13.297 に答える