[英]Returning JSON from a RESTful service using CXF DOSGI
我有一個簡單的服務,使用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.
我閱讀了文檔並想到可能需要注冊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);
但這沒有任何區別。
如何修復“沒有為響應類MyClass找到消息正文編寫器”。 錯誤信息?
沒有消息正文編寫器意味着您的json提供程序不了解如何封送您返回JSON的類。 如果您使用的是默認的JSONProvider,那么您使用的是Jackson,它使用JAXB注釋。 換句話說,您返回的類應該在類級別上具有@XmlRootElement批注。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.