2011-09-06 28 views
2

在我们的应用程序中有一个返回Company的JSON表示的工作方法。我通过添加MediaType.APPLICATION_XML来修改@Produces。但是,当我将请求中的“Accept”头设置为“application/xml”时,Jersey返回一个400“错误请求”。为什么在Jersey中使用MIME类型application/xml请求资源时出现“无效请求”?

@GET 
@Path("{unique_id}") 
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
public Response getCompanyDetail(@PathParam("unique_id") long id, @QueryParam("view") final String view, @Context UriInfo ui) { 

这是日志消息:

2011-09-07 12:35:58,279 ERROR [STDERR] Sep 7, 2011 12:35:58 PM com.sun.jersey.spi.container.ContainerResponse write 
SEVERE: A message body writer for Java type, class com.dnb.applications.webservice.rest.view.response.GetCompanyDetailResponse, and MIME media type, application/xml, was not found 

......

它工作正常使用JSON,虽然。

这里是炸毁行:

return responseBuilder.entity(vo).build(); 

'VO' 是我们JAXB注释视图对象。它用@XmlType注释。

如果我们想要添加XML支持,这是正确的方法吗?我认为Jersey有一个XML提供程序,并默认处理XML。

在同一个方法中为JSON和XML构建响应是否存在任何问题?

回答

4

带注释的类缺少@XmlRootElement注释。这适用于返回JSON而不是XML。

相关问题