web-dev-qa-db-ja.com

JAX-RS2.0のデフォルト実装の変更

RESTEasyをJAX-RS2.0クライアント実装として使用しようとしています。問題は、ランタイム例外が発生したことです。

_06-28 13:29:06.410: E/AndroidRuntime(5745): Caused by: Java.lang.RuntimeException: Java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
06-28 13:29:06.410: E/AndroidRuntime(5745):     at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.Java:103)
_

したがって、newBuilder()メソッドはJerseyClientBuilderを検索しています。代わりにRESTEasyを使用するようにシステムに指示するにはどうすればよいですか?

22
damluar

まあ、JAX-RSはサービスプロバイダーの規約に依存しています。 newBuilderメソッドの最初の行で、次のように読み取ることができます。

 Object delegate = FactoryFinder.find(JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY,
   JAXRS_DEFAULT_CLIENT_BUILDER); 

JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY"javax.ws.rs.client.ClientBuilder"です。

次に、FactoryFinder

  • 最初にクラス名をMETA-INF/services/javax.ws.rs.client.ClientBuilder
  • 次に、プロパティjavax.ws.rs.client.ClientBuilderから${Java.home}/lib/jaxrs.properties
  • 最後に、システムプロパティjavax.ws.rs.client.ClientBuilderに移動します。

したがって、RESTEasyを使用するには、ファイルを作成する必要があります

META-INF/services/javax.ws.rs.client.ClientBuilder

テキスト付き:

org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder

これはRESTEasyのクラス名ですClientBuilder

22