2012-10-14 23 views
13

मैं कुछ जावा आरईएसटी सेवाओं को लागू करने के लिए जर्सी का उपयोग करना चाहता हूं। डिफ़ॉल्ट पीओजेओ कनवर्टर जेएक्सबी जेएसओएन ऑब्जेक्ट्स को थोड़ा अजीब संभालता है, इसलिए मैं पीओजेओ को कम या कम ओवरहेड के साथ बदलने के लिए जैक्सन का उपयोग करना चाहता हूं। मैं एक और कनवर्टर का उपयोग करने के लिए जे 2 एमई ढांचे को कैसे बताऊंगा?जर्सी के लिए जैक्सन का आसानी से उपयोग कैसे करें

<!-- Jersey JAVA REST implementation --> 
<servlet> 
<servlet-name>Jersey</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>org.foobar.rest.services</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

उत्तर

16

बस जैक्सन जार जोड़ सकते हैं और इस तरह web.xml संशोधित:

मेरे web.xml इस तरह दिखता है

<!-- Jersey JAVA REST implementation --> 
<servlet> 
<servlet-name>Jersey</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>org.foobar.rest.services;org.codehaus.jackson.jaxrs</param-value> <!-- use jackson for JSON --> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

आवश्यक जैक्सन जार (http://jackson.codehaus.org/) कर रहे हैं:

jackson-core-asl-1.9.10.jar 
jackson-core-lgpl-1.9.10.jar 
jackson-jaxrs-1.9.10.jar 
jackson-mapper-asl-1.9.10.jar 
jackson-mapper-lgpl-1.9.10.jar 
jackson-mrbean-1.9.10.jar 
jackson-smile-1.9.10.jar 
jackson-xc-1.9.10.jar 
+1

वाह thats सरल – daskai0815

+0

यह (धन्यवाद!) मेरे लिए काम नहीं करता है मुझे एक त्रुटि मिलती है "जावा क्लास के लिए एक संदेश बॉडी लेखक ... और एमआईएम मीडिया प्रकार एप्लिकेशन/जेसन नहीं मिला" – TOUDIdel

+0

मैवेन के साथ आवश्यक जैक्सन जेएआर खींचने के लिए बस 'जैक्सन-मैपर-एएसएल' पर निर्भर करता है। – lanoxx

5

जैक्सन 1.x प्रदाता को पंजीकृत करने के अलावा, आप वैकल्पिक रूप से जैको का उपयोग कर सकते हैं एन 2.x जेएसओएन प्रदाता (जैक्सन 2.x डाटाबेस और कोर मॉड्यूल के साथ यह निर्भर करता है): https://github.com/FasterXML/jackson-jaxrs-json-provider यह स्वयं सेवा प्रदाता इंटरफ़ेस के साथ स्वतः पंजीकृत करता है (1.x ऐसा नहीं था क्योंकि इससे डर था क्योंकि उपयोगकर्ता इससे आश्चर्यचकित हो सकते हैं यह स्पष्ट पसंद के बजाय कक्षा में एक जार के अस्तित्व पर आधारित है)।

संपादित करें (सितम्बर 2013): जैसा कि @koppor से कहा, इस मॉड्यूल को पदावनत किया जा रहा है, और बदले जाने वाले (JSON, एक्सएमएल, मुस्कान) से https://github.com/FasterXML/jackson-jaxrs-providers पाया जा सकता है

+1

जैक्सन 2.2 के साथ शुरू, उस मॉड्यूल को बहिष्कृत किया गया है। इसके बजाय https://github.com/FasterXML/jackson-jaxrs-providers का उपयोग करें। – koppor