在没有 web.xml 的情况下配置 POJOMappingFeature

Configuring POJOMappingFeature without web.xml

我正在使用 Jersey 将 Java 对象编组到 JSON,如下所示:

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("/test")
public Response replay(String input) throws IOException {
    return Response.ok().entity(new MyClass()).build();
}

我收到以下异常:

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.company.MyClass, and Java type class com.company.MyClass, and MIME media type application/octet-stream was not found.

我知道这里的解决方案是:

  1. 添加 jackson-jaxrs-json-provider 依赖项
  2. 使用com.sun.jersey.api.json.POJOMappingFeature

POJOMappingFeature一般配置在web.xml。 对于注释驱动且不使用 web.xml 的应用程序是否有替代方案?

谢谢

您应该可以将其添加到您的 pom 文件中。

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
    </dependency>

如果您从 Jersey maven 原型创建项目,通常会注释掉此依赖项。

com.sun.jersey.api.json.POJOMappingFeature 仅适用于版本 1.* 的 Jersey。包名称从 com.sun.* 更改为 org.glassfish.* 从 Jersey 的版本 1 到 2.