【问题标题】:Returning JSON from a RESTful service using CXF DOSGI使用 CXF DOSGI 从 RESTful 服务返回 JSON
【发布时间】:2012-02-08 07:55:38
【问题描述】:

我有一个简单的服务,它使用 JAX-RS 注释进行注释,并包含 @Produces("application/json") 注释。我在注册服务时设置了以下属性(我使用的是 DS,但这没关系):

service.exported.interfaces -> *
service.exported.configs    -> org.apache.cxf.rs
org.apache.cxf.rs.address   -> myURI

当我运行我的应用程序时,我可以点击 URL,但我的浏览器返回:

No message body writer has been found for response class MyClass.

我的 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.

我阅读了documentation 并认为我可能需要注册一个 JSON 提供程序。我在 5 月添加了 Activator:

bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
    "javax.ws.rs.ext.MessageBodyWriter" },
    new org.apache.cxf.jaxrs.provider.JSONProvider(), null);

但这并没有什么不同。

如何解决“未找到响应类 MyClass 的消息正文编写器”。错误信息?

【问题讨论】:

    标签: cxf jax-rs dosgi


    【解决方案1】:

    没有消息正文编写器意味着您的 json 提供程序不了解如何将您返回的类编组为 JSON。如果您使用的是默认 JSONProvider,那么您使用的是使用 JAXB 注释的 Jackson。换句话说,您返回的类应该在类级别上有一个@XmlRootElement 注解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多