2012-03-28 61 views
1

我正在尝试使用Jersey RS为POJO返回JSON。这是而不是一个servlet,并且没有servlet容器。泽西岛正在从Netty(不是捷蒂)内设置。我可以让Jersey返回APPLICATION_XML,但APPLICATION_JSON在同一个资源上抛出一个异常,说没有发现我的域类的Message Body writer。我在pom.xml中包含了jersey-json和jackson-jaxrs模块。Jersey应用程序无法返回简单POJO的JSON表示

这里的ResourceConfig是如何被设置:

Map<String, Object> props = new HashMap<String, Object>(); 
props.put(PackagesResourceConfig.PROPERTY_PACKAGES, RESOURCES_PACKAGE); 
props.put(PROPERTY_BASE_URI, "http://localhost:9000/"); 
props.put(JSONConfiguration.FEATURE_POJO_MAPPING, true);  
ContainerFactory.createContainer(JerseyHandler.class, new PackagesResourceConfig(props)); 

其中JerseyHandler是我的Netty Handler类。 资源是非常简单的:

@Path("/test") 
public class TestResource { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public TestData get() { 
      return new TestData(); 
    } 

TESTDATA是最简单的模型类:

@XmlRootElement 
public class TestData { 
    private String firstName; 
    private String lastName; 

    public TestData() {} 
    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 

这里的尝试访问 “/测试” 时除外:

SEVERE: A message body writer for Java class com.xyz.models.TestData, and Java type class com.xyz.models.TestData, and MIME media type application/json was not found 

我曾尝试包括来自here的Context类,但仍然没有运气。

我无法想象从Jersey返回JSON可能很难。互联网上的所有例子都假设你使用的是一个servlet容器中的Jersey,但我不是!感谢任何投入。

回答

0

你有Jackson-core和jackson-mapper的书签吗?这就是我们需要让JSON序列化工作的原因。

+0

mvn依赖关系:tree显示jackson-core和jackson-mapper-asl模块被jersey-json拉入。任何其他想法? – 2012-03-28 20:23:04