के साथ JSON marhsalling को अनुकूलित करना हमारे पास एक जैक्स-आरएस एप्लिकेशन है जो अपाचे टॉमई पर चलता है। हम जावास्क्रिप्ट फ्रंटएंड द्वारा उपयोग किए गए जेएसओएन सम्मेलनों का बेहतर पालन करने के लिए डिफ़ॉल्ट जेटीसन प्रदाता को थोड़ा सा अनुकूलित करते हैं। TomEE अपने resources.xml फ़ाइल के माध्यम से यह करने के लिए अनुमति देता है:ग्लासफ़िश v4
<resources>
<Service id="jettison" class-name="org.apache.cxf.jaxrs.provider.json.JSONProvider">
serializeAsArray = true
dropRootElement = false
arrayKeys = members,roles
supportUnwrapped = true
writeXsiType = false
</Service>
</resources>
अब हम ग्लासफिश v4.1 की ओर पलायन कर रहे हैं, और हम उस JSON उत्पादन क्या हम TomEE में था से अलग नोटिस - इस प्रकार पूरी तरह से तोड़ने दृश्यपटल। मैं ग्लासफ़िश में JSON marshaller को अनुकूलित करने के लिए समान तंत्र की तलाश में हूं। वास्तव में, मैं जर्सी, मोक्सी, जैक्सन, जेटीसन के साथ पहले से ही थोड़ा सा stuck हूं। हम कैसे जानते हैं कि वास्तव में किस JSON प्रदाता का उपयोग किया जाता है? हम एक का चयन कैसे करते हैं? हम व्यवहार को कैसे अनुकूलित करते हैं?
एप्लिकेशन शुद्ध जेएक्स-आरएस है और जेएक्सबी-एनोटेटेड कक्षाओं के मार्शलिंग पर भरोसा करने के बजाय सीधे किसी भी JSON प्रोसेसर का उपयोग नहीं करता है। किसी भी गैर-जावाईई निर्भरताओं का परिचय बेहद अवांछनीय है, क्योंकि आवेदन कंटेनरों (टॉमई, ग्लासफ़िश, कुछ दिन वाइल्डफ्लि) में पोर्टेबल होने का इरादा है। टॉमईई के समान कॉन्फ़िगर-फ़ाइल विधि, बेहतर है; प्रोग्रामेटिक तरीका भी स्वीकार्य है - लेकिन केवल तभी पोर्टेबिलिटी बनाए रखा जाता है।
'jersey.config.server.disableMoxyJson' के बारे में पता लगाना मुझे एक दिन की तरह ले गया। आखिर में मुझे अपना जीसन प्रदाता काम कर रहा है। धन्यवाद! –