org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: 找不到 MessageBodyWriter for... 媒体类型: application/xml;charset=UTF-8

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for... media type: application/xml;charset=UTF-8

我写了一系列JAX-RS服务部署在Wildfly 11的WAR文件中。我在它们上面有@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })注释,表明我想接收 JSON 或 XML 作为服务的响应。我有一系列用 JAXB 注释注释的数据传输 objects。这些是我的服务将返回的 objects。我已经使用 JSON 进行了测试,一切都按预期进行。但是,当我使用 "Accept: application/xml" header 进行测试以便返回 XML 时,我的日志中出现以下异常:

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.test.MyObject of media type: application/xml;charset=UTF-8

我不确定 ;charset=UTF-8 来自哪里。我没有在我的 Accept header 中指定。当我使用 application/json 作为我的 Accept 类型时,我也没有在任何地方看到 ;charset=UTF-8。此外,我正在记录我所有的请求 header,并且没有看到 ;charset=UTF-8 出现在任何地方,所以这绝对不是我添加的东西。

有人遇到过这个吗?我知道我没有,所以我不知道为什么会这样。有什么想法吗?

确保您的数据传输对象(例如com.test.MyObject)使用@XmlRootElement 而非@XmlElement 进行注释。如果不是,这可能是原因...