2010-02-05 14 views
29

हम मेट्रो 1.5 स्टैक का उपयोग कर जेएक्स-डब्लूएस 2.0 वेब सेवाओं को बनाने के लिए "जावा से शुरू करें" दृष्टिकोण का उपयोग करते हैं। जब हम अपनी वेब सेवाओं में से एक पर सोपूआई जैसे मानक उपकरण को इंगित करते हैं तो यह इंगित करता है कि वेबमाइड्स के पैरामीटर वैकल्पिक हैं। जेनरेट किया गया xsd minOccurs = 0 दिखाता है।मैं एक वेबमाइड पैरामीटर कैसे कर सकता हूं

मुझे "जावा से शुरू" दृष्टिकोण में WebMethod पैरामीटर आवश्यक (शायद xsd में minOccurs = 1) बनाने का एक तरीका चाहिए। मुझे लगता है कि इसके लिए जावा एनोटेशन है, लेकिन मैं एक नहीं ढूंढ पा रहा हूं। XmlElement एनोटेशन में विशेषता की आवश्यकता है, लेकिन XmlElement को WebMethod पैरामीटर पर लागू नहीं किया जा सकता है।

क्या मेरे वेबमाइंड पैरामीटर को मैन्युअल रूप से संपादित करने और minOccurs को 1 में सेट करने से कम करने का कोई तरीका है?

उत्तर

28

मैंने सत्यापित किया है कि मेट्रो 2.0 आपको पैरामीटर पर @XmlElement(required=true) सेट करने की अनुमति देता है। जेनरेट किए गए xsd में minOccurs=0 नहीं है। यह minOccurs उत्पन्न XSD से बाहर छोड़ देता है तो यह की 1.

तुम भी endorsed/ निर्देशिका में JAX-WS 2.2 webservices-api.jar रख कर अपनी JDK अपग्रेड करना डिफ़ॉल्ट मान मान लिया गया है।

मैंने एक ही प्रश्न on the Java forums पोस्ट किया।

दोनों उत्तर के लिए जितु के लिए धन्यवाद और यह इंगित करते हुए कि minOccurs 1 से चूक जाता है इसलिए इसे .xsd से बाहर छोड़ना वांछित प्रभाव पड़ता है।

जब पैरामीटर पर @XmlElement (आवश्यक = सत्य) सेट किया गया है तो SoapUI अब इंगित करता है कि पैरामीटर वैकल्पिक के रूप में नहीं है।

6

उत्पन्न xsd minOccurs = 0 दिखाता है।

यह प्रति विनिर्देशन है: कोई गैर-प्राइमेटिव वैकल्पिक हैं, केवल प्राइमेटिव की आवश्यकता है।

मुझे "जावा से शुरू" दृष्टिकोण में WebMethod पैरामीटर आवश्यक (शायद xsd में minOccurs = 1) बनाने के लिए एक तरीका चाहिए।

यह संभव नहीं है, जब तक कि आप पहले उल्लेख किए गए प्राइमेटिव का उपयोग न करें।

और वास्तव में, इस कारण जावा पहले बेकार है (हाँ, ऐसा लगता है कि डेवलपर्स लेकिन it just does not work) में से एक है: अपने नाजुक, अनुबंध बदल सकता है, इसके लिए आप सभी नियंत्रण की जरूरत नहीं देता है (!) , यह fit well with WS-Security आदि नहीं है, इसलिए, वास्तव में, contract-first सुखद नहीं है, लेकिन कम से कम, यह काम करता है।

+0

टिप्पणियों और लिंक के लिए धन्यवाद। मैं उन ब्लोटेड वेब सेवाओं की किताबों को वहां से बाहर करना चाहता हूं (जिनमें से कुछ मैंने पढ़ा है - मेरा मतलब है के माध्यम से waded) यह आपके जैसा स्पष्ट रूप से कहा होगा। –

+0

@ डीन आपका स्वागत है। और जेएक्स-डब्ल्यूएस 2.2 पर प्रतिक्रिया के लिए धन्यवाद (भले ही यह वास्तव में प्रारंभिक प्रश्न के दायरे में नहीं था)। –

+2

मैं कहूंगा कि डब्लूएसडीएल-पहले समान रूप से काम नहीं करता है। जिस ब्लॉग को आप जटिल अनुरोध और रैपिंग के लिए रिटर्न ऑब्जेक्ट्स का उपयोग करने के बारे में बात करने के लिए लिंक करते हैं, लेकिन यह कई समस्याओं को प्रस्तुत करता है, जैसे अंतर्निहित फ़ील्ड में आवश्यक चीज़ों को छिपाने, पुन: उपयोग के दुरुपयोग आदि ... फिर, मैं एक एक वेब सेवा जैसी कुछ बनाने के लिए वसंत और प्रॉक्सी का उपयोग करने के रूप में कुछ अच्छा उदाहरण उदाहरण स्थानीय रूप से एक इंटरफ़ेस के सरल कार्यान्वयन के रूप में दिखाई देता है। इस तरह से अपने स्थानीय इंटरफ़ेस को गमिंग करना आपको यह भूलने से रोकता है कि यह एक ऐसी सेवा है जो * होता है * जेएक्स-डब्ल्यूएस के माध्यम से खुलासा किया जाता है। – jcalvert

2

यहां एक ही प्रश्न की एक और चर्चा है। प्रतिक्रिया के अनुसार मेट्रो 2.0 एक विधि पैरामीटर पर @XmlElement डालने का समर्थन करता है जो मेरी समस्या को हल करना चाहिए।

http://forums.java.net/jive/thread.jspa?messageID=385565&#385565

मेट्रो 2.0 10 दिसंबर को जारी किया गया था, 2009 तो यह नहीं रह गया है ईए में। मैं इसे आज़मा दूंगा और देख सकता हूं कि यह काम करता है या नहीं।

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