gpt4 book ai didi

cxf - 使用 CXF DOSGI 从 RESTful 服务返回 JSON

转载 作者:行者123 更新时间:2023-12-04 16:00:41 25 4
gpt4 key购买 nike

我有一个简单的服务,它用 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 提供程序。在 Activator 中,我添加了:
bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
"javax.ws.rs.ext.MessageBodyWriter" },
new org.apache.cxf.jaxrs.provider.JSONProvider(), null);

但这没有任何区别。

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

最佳答案

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

关于cxf - 使用 CXF DOSGI 从 RESTful 服务返回 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8828104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com