15

Jackson を JAX-RS 2.0 Web サービスの JSON プロバイダーとして使用したいと考えています。JAX-RS の場合、GlassFish 4 で Jersey 2.0 を使用します。JAX-RS 1.x では追加できます

<init-param>
  <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
  <param-value>true</param-value>
</init-param>

私の中でweb.xml。Jersey 2.0を使用するJax-RS 2.0でこれを行うにはどうすればよいですか? このようなアプリケーションクラスを実装します

public class MyRESTExampleApplication extends ResourceConfig {
    public MyRESTExampleApplication() {
         packages("com.carano.fleet4all.restExample");
         register(JacksonFeature.class);
    }
}

これらの行を my に追加しますweb.xml

<init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>com.example.restExample.MyRESTExampleApplication</param-value>
</init-param>

しかし、リクエスト org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class ... によって例外が発生します ...

pom.xmlの見た目はこんな感じ

<dependencies>
  <dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>
</dependencies>
4

2 に答える 2

21

実装 jar Jackson JAX-RS providerを取得し、それをクラスパスに追加するだけで機能するはずです。バージョン 2.x は SPI ベースの自動登録を使用するため、 には何も必要ありませんweb.xml

于 2013-09-12T05:10:41.253 に答える
13

上記のコードは私にとってはうまくいきました。JAX-RS 2.0 には自動検出機能があるため、jersey-media-json-jackson.jar. 私は Tomcat セットアップを使用しているため、register(JacksonFeature.class)アプリケーションを明示的に呼び出す必要がありました。

于 2013-09-26T19:38:45.277 に答える