3

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 を追加しようとしましたが、まだ機能していません)

4

1 に答える 1

0

アノテーションが付けられたクラスを含むパッケージを登録する必要があります@Provider

Jersey 2 では、これはクラスで packages メソッドを呼び出すことによって行われますResourceConfig

サーブレットに配置できる basepackages 属性もあると思います。Spring アプリケーションで CXF を使用して JAX-RS リソースを自動検出するを参照してください。

于 2015-03-05T10:31:20.263 に答える