2012-01-11 14 views
6

का उपयोग कर एक विश्वसनीय सेवा से JSON लौट रहा है मेरे पास एक साधारण सेवा है जो जेएक्स-आरएस एनोटेशन के साथ एनोटेटेड है और @Produces("application/json") एनोटेशन शामिल है।सीएक्सएफ डॉएसजीआई

: मैं निम्नलिखित गुण की स्थापना की है जब मैं सेवा रजिस्टर (मैं डी एस का उपयोग कर रहा है, लेकिन है कि कोई फर्क नहीं होना चाहिए):

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 प्रदाता रजिस्टर करने के लिए की जरूरत है। एक्टिवेटर में मैंने जोड़ा:

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

लेकिन इससे कोई फर्क नहीं पड़ता है।

मैं कैसे प्रतिक्रिया करूं "प्रतिक्रिया वर्ग MyClass के लिए कोई संदेश बॉडी लेखक नहीं मिला है।" त्रुटि संदेश?

उत्तर

1

कोई संदेश नहीं है बॉडी लेखक का मतलब है कि आपका जेसन प्रदाता यह समझ में नहीं आता है कि आपने जेएसओएन में अपनी कक्षा को कैसे मार्शल किया है। यदि आप डिफ़ॉल्ट JSONProvider का उपयोग कर रहे हैं, तो आप जैक्सन का उपयोग कर रहे हैं, जो जेएक्सबी एनोटेशन का उपयोग करता है। दूसरे शब्दों में, आपके द्वारा लौटाई जाने वाली कक्षा में कक्षा स्तर पर @XmlRootElement एनोटेशन होना चाहिए।

+0

ओह, डिफ़ॉल्ट जैक्सन है, जैक्सन नहीं, लेकिन यह वही JAXB है ... –

संबंधित मुद्दे