2012-01-11 224 views
6

我有一個簡單的服務,它使用JAX-RS註釋進行註釋,幷包含@Produces("application/json")註釋。我已經設置了以下屬性,當我註冊服務(我使用DS但這不應該的問題):使用CXF從RESTful服務返回JSON DOSGI

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

當我運行我的應用程序可以打的網址,但我的瀏覽器返回:

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的消息正文寫入器」。錯誤信息?

回答

1

沒有消息正文編寫器意味着你的json提供者不知道如何編組你的類,你返回到JSON中。如果您使用默認的JSONProvider,那麼您使用的是使用JAXB註釋的Jackson。換句話說,你返回的類應該在類級別上有一個@XmlRootElement註解。

+0

糟糕,默認是Jettison,不是傑克遜,但它是一樣的 JAXB ... – 2012-08-24 02:54:06