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

时间:2017-11-21 12:22:17

标签: jersey jersey-2.0 spring-jersey

我使用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
  3. POJOMappingFeature通常在web.xml中配置。 对于注释驱动且不使用web.xml的应用程序是否有替代方法?

    由于

1 个答案:

答案 0 :(得分:1)

您应该只能将其添加到您的pom文件中。

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the no.of test-cases:");
    int t = scanner.nextInt();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter the String(s)");
    for (int i = 0; i < t; i++) {

        String myString = br.readLine();
        String even = "";
        String odd = "";
        for (int j = 0; j < myString.length(); j++) {
            if (j % 2 == 0) {
                even += myString.charAt(j);
            } else {
                odd += myString.charAt(j);
            }
        }
        System.out.println(even);
        System.out.println(odd);
    }
    scanner.close();

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

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