Spring + Jersey を使用して API サービスを構築しています。最近、Spring Data をサーバーに取り込もうとしています。実行中のコードでリポジトリを実際に使用していないため、 app.xml に1行追加するだけです:
<jpa:repositories base-package="destiny.web" entity-manager-factory-ref="entityManagerFactoryApp" />
しかし !API が機能していないことに気付きました。
xml の「jpa:repositories ...」行を削除すると、すべて正常に動作します。そして、すべてのプロバイダー クラスは spring によって登録されます。
{http://*:8080-1} Registering Spring bean, apiResultJsonWriter, of type destiny.web.api.ApiResultJsonWriter as a provider class
{http://*:8080-1} Registering Spring bean, webApi, of type destiny.web.api.WebApi as a root resource class
{http://*:8080-1} Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
しかし、XML に「jpa:repositories...」行を追加すると、「ルート リソース クラス」のみが登録されます。
{http://*:8080-1} CDI support is enabled
{http://*:8080-1} Using default applicationContext
{http://*:8080-1} Registering Spring bean, webApi, of type destiny.web.api.WebApi as a root resource class
{http://*:8080-1} Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
すべての JAXRS の @Provider (s) がありません!
Spring-Data のバグかどうかはわかりません。そして、それを解決する方法は?
環境 :
spring-3.1
jersey-core-1.8.jar
jersey-server-1.8.jar
jersey-spring-1.8.jar
spring-data-jpa-1.0.3.RELEASE.jar
spring-data-commons-core-1.1.0.RELEASE.jar
サーバー:resin-4.0.25
関連する依存関係:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.8</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.0.3.RELEASE</version>
</dependency>
( jersey-json を追加しようとしましたが、まだ機能していません)