ओवरराइट करें मेरे पास एकाधिक (चलिए 2, ए और बी) वेब सर्विसेज हैं और मुझे क्लाइंट को टॉगटर का उपयोग करने के लिए जेनरेट करने की आवश्यकता है। नेटबीन्स में मैं विज़ार्ड "नया वेब सेवा क्लाइंट" का उपयोग दो wsdl को पास करते हुए आउटपुट को देखकर नेटबीन्स को बस उनमें से प्रत्येक के लिए wsimport कहते हैं।wsimport: एकाधिक wsdl ऑब्जेक्ट फैक्टरी
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
दोनों एक
और बी, एक ही पैकेज com.mydomain.myapp (मुझे लगता है कि वे एक ही नाम स्थान में परिभाषित कर रहे हैं) उत्पन्न, तो मैं एक के ठूंठ वर्ग सेट प्राप्त और बी एक ही पैकेज में विलय कर दिया ।
हालांकि, wsimport प्रत्येक webservice के लिए ऑब्जेक्ट फैक्ट्री भी बनाता है, इसलिए यदि मैं ए के बाद बी का स्टब उत्पन्न करता हूं तो मुझे केवल बी परिभाषाओं से संबंधित ऑब्जेक्ट फैक्ट्री प्राप्त होती है (क्योंकि पहला, ए, ओवरराइट किया जाता है)। इसके विपरीत, अगर मैं ऑर्डर स्विच करता हूं तो ए का ऑब्जेक्ट फैक्ट्री बचता है।
समस्याहै कि मैं दोनों webservices एक के प्रकार और बी
के लिए JAXBElements रैपिंग clas उदाहरण बना करने के लिए दोनों ObjectFactories की जरूरत है वहाँ एक रास्ता एक जावा पैकेज में एक के लिए नाम स्थान मैप करने के लिए है और
com.mydomain.myapp.a
com.mydomain.myapp.b
और इसलिए ऑब्जेक्टफैक्टरीज दोनों को रखने के लिए बी में किसी अन्य व्यक्ति को बी?
सरल रिफैक्टरिंग मदद नहीं कर रही है क्योंकि आंतरिक रूप से एक getClass() को कॉल किया जाता है, एक बार पैकेज को दोबारा लागू करने के बाद यह अब काम नहीं करता है।
ठीक है! मैंने इस एक्सएमएल बाध्यकारी का उपयोग किया: \t \t \t \t jxb: पैकेज> \t jxb: बाइंडिंग> jxb: बाइंडिंग> फिर भी, यह मेरे XPath त्रुटि देता है: अशक्त। मेरे पास xsd नहीं है, क्या आपके पास सुझाव हैं? –
alexroat
बस एक विचार था - क्या आपने कोशिश की है "wsimport -p com.mydomain.myapp.a http: /mydomain/wsA.svc? Wsdl" और फिर "wsimport -p com.mydomain.myapp.b http:/mydomain/wsb .svc? wsdl "? इससे सभी जेनरेट किए गए कोड को निर्दिष्ट पैकेज में ("-p" स्विच के अनुसार) बाध्यकारी फ़ाइल की आवश्यकता के बिना रखा जाएगा। (इसे जल्द ही सोचा होगा ...) – FOOM
हाँ, मैंने किया। "दो घोषणाएं ऑब्जेक्ट फैक्ट्री में टकराव का कारण बनती हैं" जैसी कई त्रुटियां हैं। और "एक ही नाम के साथ एक वर्ग/इंटरफ़ेस" com.anthesi.prova.ExecuteTransmDocModelResponse "पहले से उपयोग में है। इस संघर्ष को हल करने के लिए कक्षा अनुकूलन का उपयोग करें।" – alexroat