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. 我如何在 Jax-RS 2.0 和 Jersey 2.0 中做到这一点?我实现了这样的应用程序类

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

并将这些行添加到我的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 回答