我有一个简单的服务,用JAX-RS注释注释并包含@Produces("application/json")注释.我在注册服务时设置了以下属性(我正在使用DS,但这不重要):
service.exported.interfaces -> *
service.exported.configs -> org.apache.cxf.rs
org.apache.cxf.rs.address -> myURI
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我可以点击URL,但我的浏览器返回:
No message body writer has been found for response class MyClass.
Run Code Online (Sandbox Code Playgroud)
我的OSGi控制台显示:
Jan 11, 2012 2:29:48 PM org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
WARNING: No message body writer has been found for response class MyClass.
Run Code Online (Sandbox Code Playgroud)
我阅读了文档并想到可能需要注册JSON提供程序.在May Activator中我添加了:
bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
"javax.ws.rs.ext.MessageBodyWriter" },
new org.apache.cxf.jaxrs.provider.JSONProvider(), null);
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.
如何修复"没有为响应类MyClass找到消息正文编写器".错误信息?
没有消息正文编写器意味着您的 json 提供程序不了解如何将您返回的类编组为 JSON。如果您使用默认的 JSONProvider,那么您使用的是 Jackson,它使用 JAXB 注释。换句话说,您返回的类应该在类级别具有 @XmlRootElement 注释。
| 归档时间: |
|
| 查看次数: |
4331 次 |
| 最近记录: |