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

时间:2012-05-04 15:01:41

标签: json rest 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

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

myServletHolder.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");

myServletContextHandler.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");

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

2 个答案:

答案 0 :(得分:6)

当我看到这个没有回答的时候,我感到非常失望,因为我一整天都在打架。终于想通了,所以这里对我有用。

我在做什么:

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

我需要做什么:

    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)));

我必须确保将我的Jersey包和我的POJOMappingFeature标志指定为init params。希望这会有所帮助。

答案 1 :(得分:1)

确保您的类路径中有jackson json-parser和JAXB lib。