让Jersey的JSON POJO支持从嵌入式Jetty开始工作?

wan*_*ist 0 rest json jetty jersey

我正在尝试使用Jersey从我的Jetty服务器获取一个简单的JSON格式对象.

我一直收到错误:

SEVERE: A message body writer for Java class my.package.resources.Album, and Java type class my.package.resources.Album, and MIME media type application/json was not found
Run Code Online (Sandbox Code Playgroud)

一个问题是我不确定将POJOMappingFeature放在Jetty的哪个位置,我尝试了以下但是没有更改错误:

myServletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Run Code Online (Sandbox Code Playgroud)

myServletContextHandler.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Run Code Online (Sandbox Code Playgroud)

我知道Jersey的基本REST功能正在运行,因为在我尝试使用JSON输出之前我使用了纯文本并且它工作得很好.

小智 6

当我看到这个没有回答的时候我感到非常失望,因为我整天都在和它作斗争.终于想通了,所以这里对我有用.

我在做什么:

    ServletHolder servletHolder = new ServletHolder(new ServletContainer(new PackagesResourceConfig("my.package.with.resources")));
    servletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Run Code Online (Sandbox Code Playgroud)

我需要做什么:

    Map<String,Object> initMap = new HashMap<String, Object>();
    initMap.put("com.sun.jersey.api.json.POJOMappingFeature", "true");
    initMap.put("com.sun.jersey.config.property.packages", "my.package.with.resources");
    ServletHolder servletHolder = new ServletHolder(new ServletContainer(new PackagesResourceConfig(initMap)));
Run Code Online (Sandbox Code Playgroud)

我必须确保将我的Jersey包和我的POJOMappingFeature标志指定为init params.希望这可以帮助.