/ / जर्सी के साथ MOXy के @ XmlCDATA एनोटेशन का उपयोग करना - jaxb, जर्सी, weblogic-10.x, jaxb2, moxy

जर्सी के साथ MOXy की @XmlCDATA एनोटेशन का उपयोग करना - जैक्सबी, जर्सी, वेबलॉगिक-10.x, जैक्सबी 2, मोक्सी

मैं जर्सी के साथ लिखी गई REST वेब-सेवा पर काम कर रहा हूं और मैं CDATA वर्गों के साथ कुछ XML आउटपुट करने की कोशिश कर रहा हूं। मै समझता हुँ JAXB के संदर्भ कार्यान्वयन का समर्थन नहीं करता है, इसलिए मैंने "EclipseLink" का MOXy डाउनलोड किया है और मैं काम करने के लिए @XmlCDATA एनोटेशन प्राप्त करने की कोशिश कर रहा हूं।

मेरा JAXB मैप किया हुआ सेम इस तरह दिखता है

package com.me.entities;

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD)
public class MyBean {

@XmlAttribute
private URI thumbnail;

@XmlElement(name="longdescription") @XmlCDATA
private String description;

public MyBean() { }

public final String getDescription() { return description; }

public final void setDescription(String d) { this.description = d; }
}

और मेरे पास है jaxb.properties में फ़ाइल com/me/entities वर्ग फ़ाइलों के साथ। गुण फ़ाइल है

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

इस में। मुझे यकीन है कि यह सफलतापूर्वक लोड हो जाता है क्योंकि अगर मैं फ़ैक्टरी क्लास के नाम को कुछ बकवास के साथ बदल देता हूं, तो ऐप टूट जाता है। इसके अलावा, स्पष्ट रूप से अपने स्वयं के कार्यों पर JAXBContext बनाने वाली फ़ाइल को मार्शली करना, इसलिए समस्या जर्सी से संबंधित है। इस मेरा सेटअप ठीक है, लेकिन जब मेरा जर्सी संसाधन MyBean का एक उदाहरण देता है

...
@GET @Produces(MediaType.TEXT_XML)
public MyBean getMyBean() {
MyBean b = new MyBean();
b.setDescription("Some blurb plenty of invalid chars like <<< && >>>");

return b;
}

मुझे जो वापस मिल रहा है उसमें कोई सीडीएटीए नहीं है, लेकिन जैसा दिखता है

<?xml version="1.0" encoding="utf-8"?>
<info><longdescription>Some blurb plenty of invalid chars like &lt;&lt;&lt; &amp;&amp; >>></longdescription></info>

मैं क्या गलत कर रहा हूं?

उत्तर:

जवाब के लिए 2 № 1

ऐसा लगता है कि समस्या मेरा एप्लिकेशन सर्वर था: मैं इसके साथ चल रहा हूं वेबलॉग 10.3.5 विकास मोड में, जो पहले से स्थापित कई आम पुस्तकालयों के साथ आता है जो डिफ़ॉल्ट कॉन्फ़िगरेशन में वेबएप में तैनात लोगों पर पूर्वता लेता है WEB-INF/lib फ़ोल्डर।

इसे ठीक करने के लिए एक वेबलॉग विशिष्ट एप्लिकेशन विवरण की आवश्यकता है, बस एक बनाएं weblogic.xml अंदर फाइल करें WEB-INF युक्त prefer-web-inf-classes विकल्प। मैंने जो फ़ाइल उपयोग की है वह यह है:

<?xml version="1.0" standalone="yes"?>
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>

मुझे अभी भी पता नहीं है कि कौन सी लाइब्रेरी की समस्या थी, हालांकि, कोई भी इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करता है।


जवाब के लिए 0 № 2

कृपया जैक्सब एक्सटेंशन डाउनलोड करें: यह जक्लब के लिए एक्लिप्सिंक ओपन सोर्स एक्सटेंशन है। जार फ़ाइल प्राप्त करें: eclipselink.jar प्रतिलिपि प्रोजेक्ट लायबिलिटी में।

http://www.eclipse.org/eclipselink/downloads/
EclipseLink 2.4.1 Installer Zip (37 MB)

और उदाहरण यहां देखें:

http://theopentutorials.com/tutorials/java/jaxb/jaxb-marshalling-and-unmarshalling-cdata-block-using-eclipselink-moxy/

अच्छे लगे!।