2012-05-05 17 views
9

मैं JAXB बाइंडिंग का उपयोग कर रहा मेरे डोमेन परत वस्तुओं, जो उत्पन्न वेब सेवा प्रकार के उपवर्गों हैं करने के लिए सीधे unmarshal करने के लिए। यह एक अच्छा समाधान है के रूप में मैं तरीकों को ओवरराइड और लिखने कस्टम तर्क, आदि हालांकि, XJC संकलक, सभी उत्पन्न वर्गों पर @XmlSeeAlso ({MySubclass.class}) एनोटेशन डालने पर जोर है प्रदान कर सकते हैं जो उन्हें होने के लिए खड़ी कर रहा है कड़ाई से मेरे डोमेन ऑब्जेक्ट्स के साथ मिलकर। यह स्पष्ट रूप से अवांछित है और मेरी परियोजनाओं के बीच सभी प्रकार के संदर्भ मुद्दों का कारण बनता है जो मैं यहां नहीं पहुंचूंगा।JAXB @XmlSeeAlso डोमेन के लिए तंग युग्मन के कारण वस्तुओं

क्या यह संभव है कि कक्षाओं @XmlSeeAlso एनोटेशन की जरूरत नहीं है उत्पन्न करने के लिए? उपclass के लिए unmarshaling का वास्तविक काम ऑब्जेक्ट फैक्टरी वर्ग में होता है। क्या जैक्सब बाध्यकारी को छोड़ना और प्रत्येक एप्लिकेशन के लिए कस्टम ऑब्जेक्ट फैक्ट्री को प्रतिस्थापित करना संभव है? यह मुझे साझा उपयोग में स्वत: जेनरेट किए गए webservice प्रकारों की अनुमति देगा, जबकि प्रत्येक वेब प्रोजेक्ट इन प्रकार के विभिन्न उप-वर्गों के लिए अनारक्षित हो सकता है।

<jaxb:bindings node="//xs:complexType[@name='AutogeneratedWebserviceType']"> 
    <jaxb:class implClass="my.project.CustomSubclass" /> 
</jaxb:bindings> 

यह बाध्यकारी ObjectFactory कि मेरे उपवर्ग को unmarshaling की वास्तविक काम करने के लिए लगता है में एक विधि का निर्माण करेगा: यदि किसी ग्राहक प्रदान करके

public AutogeneratedWebserviceType createAutogeneratedWebserviceType() { 
    return new CustomSubclass(); 
} 

मैं @XmlSeeAlso एनोटेशन के बिना इस व्यवहार चाहते ObjectFactory , अगर संभव हो तो।

उत्तर

2

आप XJC चल कोशिश तर्क के साथ -target 2.0 था? मेरा मानना ​​है कि यह @XmlSeeAlso एनोटेशन की पीढ़ी को अक्षम कर देगा।

इस तरह चींटी उपयोग कुछ के लिए
+0

: <कार्यकारी निष्पादन = "$ {xjc.path}"> <आर्ग value = "../ स्कीमा/*" /> <आर्ग मूल्य = "- d"/> <आर्ग value = "$ {jaxbsrc.dir}" /> <आर्ग मूल्य = "- लक्ष्य" /> <आर्ग value = "2.0" /> –

+0

आपको बहुत बहुत धन्यवाद, "-target 2.0" मेरी समस्या हल हो गई। मैं ओएसजीआई-पर्यावरण में वेबसाइट सर्विसेज का उपयोग कर रहा हूं और यह बेवकूफ रनटाइम-एनोटेशन XmlSeeAlso ने अन्य मॉड्यूल के लिए एक कसकर कपलिंग का कारण बना दिया जो पूरी तरह से अनावश्यक था – lostiniceland