2012-02-29 10 views
22

मुझे JSON-REST API का सर्वर पक्ष बनाने की आवश्यकता है, और मैं इसे करने के लिए जर्सी के साथ खेल रहा हूं (इसकी JSON-POJO मैपिंग सुविधा का उपयोग करके)।जेएसओएन रीस्ट एपीआई बनाने के लिए जर्सी/जैक्सन के लिए बेहतर विकल्प?

समस्या यह है कि यहां तक ​​कि सबसे आसान संभव उपयोग-मामले का परीक्षण करने के लिए यहां SO पर कई प्रश्नों की आवश्यकता है, और आसपास के शिकार का काफी कुछ है। संक्षेप में, यह जेएसओपी की शैली में बहुत तरल एपीआई नहीं है, ऐसा लगता है कि यह युग से आता है जहां सबकुछ एक्सएमएल था, और फिर इसे जेएसओएन के लिए फिर से लगाया गया था।

आप आवश्यकता है कि POJO वस्तुओं @XmlRootElement भले ही कुछ भी नहीं मैं कर रहा हूँ एक्सएमएल शामिल है के साथ एनोटेट करने की आवश्यकता में देख सकते हैं, उदाहरण के लिए,।

मुझे आश्चर्य है कि क्या अन्य पुस्तकालय हैं, शायद हाल ही में, मुझे इस पर विचार करना चाहिए कि जर्सी से उपयोग करना आसान हो सकता है? gson और jackson:

+10

हाँ! हाँ! भगवान के प्यार के लिए हाँ! मैं इस तरह के सवाल को बार-बार पूछ रहा हूं और मैं कुछ भी वापस नहीं ले रहा हूं। मैंने एक 300pt बाउंटी भी छोड़ दिया और अभी भी कुछ भी नहीं: [यहां] (http://stackoverflow.com/questions/6986365/java-rest-client-jax-rs-automatic-type-mapping)। [और यह एक मजेदार था।] (Http://stackoverflow.com/questions/6312030/cxf-no-message-body-writer-found-for-class-automatically-mapping-non-simple-r)। मुझे नहीं पता कि हमें जावा में अभी तक बंधे वेब सेवाओं क्यों नहीं मिली हैं। – javamonkey79

उत्तर

3
POJOs के लिए json परिवर्तित करने के लिए

Restful के लिए मैं spring, या restlet का उपयोग करूंगा।

+0

हां, मैं जीसन से बहुत परिचित हूं, और जर्सी पहले से ही जैक्सन का उपयोग करता है, लेकिन जेएसओएन को पीओजेओ से और कनवर्ट करना समस्या का केवल एक हिस्सा है, मैं जर्सी के लिए एक विकल्प की तलाश में हूं, जो आरईएसटी- HTTP एपीआई। यदि कोई अस्तित्व में था तो मैं एक HTTP ढांचा पसंद करूंगा जो जर्सी के बजाय जीसन के साथ काम करता था क्योंकि मैं इसके साथ अधिक आरामदायक हूं। – sanity

+1

@ सैनिटी ओह, वसंत तो – NimChimpsky

4

मैं अत्यधिक बाकी एपीआई के लिए JBoss RESTEasy सलाह देते हैं। मैंने इसे दो परियोजनाओं पर इस्तेमाल किया है और इसे सेटअप के लिए तुच्छ पाया गया है। यदि आपको इसकी ज़रूरत है तो यह स्प्रिंग के साथ अच्छी तरह से एकीकृत करता है।

मैंने जैक्सन और जीसन दोनों को जेएसओएन समर्थन के लिए रीस्टेसी के साथ उपयोग किया है और यह काफी सरल है। आप जो भी करते हैं वह जेएक्सबी एनोटेशन के साथ पीओजेओ को एनोटेट करता है और उचित पुस्तकालयों को शामिल करता है।

रीस्टेसी का एक और वास्तव में महान हिस्सा मल्टीपार्ट फॉर्म डेटा के लिए अच्छा समर्थन है। वे एक @ मल्टीपार्टफॉर्म एनोटेशन प्रदान करते हैं जो आपको किसी भी कोड लिखने के बिना पीओजेओ को एक मल्टीपार्ट फॉर्म को बांधने की अनुमति देता है ... काम करता है।

मैं बाकी के लिए वसंत MVC के खिलाफ सलाह देंगे क्योंकि यह नहीं JAX-आरएस अनुरूप है। यदि आप सड़क के नीचे एक अलग कार्यान्वयन पर स्विच करने का निर्णय लेते हैं तो एक जेएक्स-आरएस अनुपालन इंटरफ़ेस का उपयोग करना आपको थोड़ा बेहतर पोर्टेबिलिटी देता है।

+0

हम्म, मुझे यकीन नहीं है, ऐसा लगता है कि यह एक युद्ध फ़ाइल में तैनात होने की अपेक्षा करता है, और मैं हेवीवेट सर्वलेट कंटेनर और उस सभी बुनियादी ढांचे से बचने के बजाय, एपीआई सिर्फ एक छोटा सा है मेरी परियोजना का हिस्सा, मैं पूरी चीज को युद्ध में नहीं भरना चाहता हूं इसलिए मैं एपीआई का समर्थन कर सकता हूं: -/ – sanity

+0

जेटी पर इसे चलाएं ... यह हल्का वजन होगा! –

2

नोट: मैं EclipseLink JAXB (MOXy) सीसा, JAXB (JSR-222) विशेषज्ञ समूह का सदस्य और Jersey परियोजना के लिए एक योगदानकर्ता हूँ।

जर्सी या किसी भी जेएक्स-आरएस परियोजना के साथ आप अपने JSON बाध्यकारी पर पूर्ण नियंत्रण के लिए MessageBodyReader/MessageBodyWriter का उपयोग कर सकते हैं। नीचे JSON प्रदाता के रूप में MOXy का लाभ उठाने के लिए इस तंत्र का उपयोग करने का एक उदाहरण है।

0

NimChimpsky mentioned restlet बॉक्स से बाहर ऐसा करेंगे के रूप में। इसके अलावा, यदि आपका ग्राहक जावा भी है तो आप कार्यक्षमता को एक इंटरफ़ेस में सारणीबद्ध कर सकते हैं और क्लाइंट साइड प्रॉक्सी के साथ इसे आसानी से लपेट सकते हैं। यह ट्यूटोरियल पेज दिखाता है कि मैंने here का उल्लेख कैसे किया है।

0

आप JEST कोशिश कर सकते हैं, यह OpenJPA पर काम करता है।

9

जर्सी जैक्सन का उपयोग करके किसी भी टिप्पणी के बिना जेएसओएन को पीओजेओ को क्रमबद्ध कर सकता है। आप इसे JSONConfiguration.FEATURE_POJO_MAPPING संपत्ति true पर सेट करके कॉन्फ़िगर करते हैं।

web.xml में, निम्न सर्वलेट init पैरामीटर जोड़ें:

<init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 

See the Jersey documentation

+0

ध्यान दें कि जैक्सन का उपयोग कर जर्सी 2 दस्तावेज wrt imo खराब/कमी/दिनांकित है। इस प्रश्न पर एक नज़र डालें और http://stackoverflow.com/questions/17511268/cant-enable-pojo-based-json-binding-support-for-jackson-in-jersey-2-0 का उत्तर दें। –

1

यह एक पूर्वाग्रह जवाब है, लेकिन हम & सामाजिक आवेदन हमारे सभी उद्यम के लिए बर्फ का उपयोग किया गया है और यह बेहद हल्के है , पूरी तरह से गुइस पर आधारित है, और आपको किसी भी जावा विधि (गुइस द्वारा प्रबंधित ऑब्जेक्ट के साथ) को किसी भी आरईएसटी कॉल को बाध्य करने की अनुमति देता है। बहुत लचीला और सरल।

http://britesnow.com/snow

मैं इस माइक्रो ढांचे के निर्माता हूँ, इसलिए, मैं आपकी प्रतिक्रिया प्राप्त करने के लिए अच्छा लगेगा।

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