2013-04-16 9 views
5

में एक्सएसडी स्कीमा है मैंने जेएक्स-डब्ल्यूएस का उपयोग करके एक छोटी सी वेब सेवा बनाई है। डब्लूएसडीएल फ़ाइल में इस तरह के TYPES तत्व हैं।जेएक्स-डब्ल्यूएस में विभिन्न यूआरएल

<types> 
    <xsd:schema> 
    <xsd:import namespace="http://ws.poc.mawia/" schemaLocation="http://localhost:777/ws/hello?xsd=1"/> 
    </xsd:schema> 
</types> 

वेब सेवा के लिए URL http://localhost:777/ws/hello?wsdl है और XSD http://localhost:777/ws/hello?xsd=1 है। अलग-अलग स्थानों में एक्सएसडी स्कीमा फ़ाइल में डेटा प्रकार परिभाषाएं हैं।

... 
... 
    <xs:complexType name="student"> 
    <xs:sequence> 
    <xs:element name="name" type="xs:string" minOccurs="0"/> 
    <xs:element name="rollNo" type="xs:int"/> 
    </xs:sequence> 
    </xs:complexType> 
    ... 
... 

डबल्यूएसडीएल फ़ाइलों मैंने देखा है में से अधिकांश आमतौर पर डबल्यूएसडीएल ही फ़ाइल लेकिन JAX-WS एक अलग स्थान में रखने से है अंदर पूरा XSD परिभाषा है।

क्या यह होना चाहिए? मैं एक डब्ल्यूएसडीएल फ़ाइल में सभी एक्सएसडी परिभाषाओं को रखने के लिए जेएक्स-डब्ल्यूएस को कैसे कॉन्फ़िगर कर सकता हूं?

उत्तर

7

क्या यह होना चाहिए?

डब्लूएसडीएल से एक्सएसडी को अलग करना जेएक्स-डब्ल्यूएस में डिफ़ॉल्ट व्यवहार है, और आपको इसके बारे में ज्यादा चिंता करने की आवश्यकता नहीं है। अद्यतित डब्ल्यूएस ढांचे (डब्ल्यूसीएफ समेत) आम तौर पर इसे संभालने में सक्षम होते हैं। एक्सएसडी के आकार के आधार पर, इसे आयात करने से डब्ल्यूएसडीएल मानव के लिए अधिक पठनीय हो सकता है। एक छोटी सी वेब सेवा के लिए एक एम्बेडेड स्कीमा होना निश्चित रूप से आसान होगा, लेकिन इसे आयात करने में भी कोई समस्या नहीं है।

मैं एक डब्लूएसडीएल फ़ाइल में सभी एक्सएसडी परिभाषाओं को रखने के लिए जेएक्स-डब्ल्यूएस को कैसे कॉन्फ़िगर कर सकता हूं?

मैं एक सीधा रास्ता क्रम डबल्यूएसडीएल में स्कीमा एम्बेड बनाने के लिए के बारे में पता नहीं है, लेकिन वहाँ एक समाधान है जिसके द्वारा आप इस लक्ष्य को हासिल कर सकते हैं:

  1. अपने अंतिम बिंदु प्रकाशित करें और बचाने के लिए WSDL और XSD
  2. मैन्युअल डबल्यूएसडीएल की types अनुभाग में XSD की सामग्री की नकल और स्कीमा आयात वहाँ
  3. सहेजें मर्ज किए गए WSDL फ़ाइल कहीं जहां अपने आवेदन के लिए एक संसाधन के रूप में यह उपयोग कर सकते हैं की जगह
  4. क्या आपकी वेब सेवा विलय डब्लूएसडीएल लोड करती है। इस गतिशील पीढ़ी हालांकि बंद हो जाएगा, तो आप मैन्युअल डबल्यूएसडीएल हर बार अद्यतन करने के लिए होगा आप इंटरफ़ेस

आप @WebService एनोटेशन को अनुकूलित करके 4. लागू कर सकते हैं में परिवर्तन करें। यह कुछ हद तक इस तरह दिख सकता है:

@WebService(wsdlLocation = "MyWebService.wsdl") 
public class MyWebService { .... } 
+0

MyWebService एक कक्षा या इंटरफ़ेस है? – Mawia

+0

मेरे पास सेटिंग में, यह एक कक्षा है। 'MyWebService' अभी भी एक इंटरफ़ेस लागू करता है ('@ वेब सेवा' एनोटेशन के साथ) और 'इंटरपॉइंट इंटरफेस' विशेषता के साथ उस इंटरफ़ेस को इंगित करता है। उर्फ: '@ वेब सेवा (एंडपॉइंट इंटरफेस = "कुछ.package.MyPortType", ...) ' – joergl

0

आपके दृष्टिकोण में कुछ भी गलत नहीं है। डब्ल्यूएसडीएल यूआरएल का उपयोग कर एक और wsdl को इंगित करता है ठीक है।

यदि आप इसे नहीं चाहते हैं, तो @WebService एनोटेशन के wsdlLocation विशेषता का उपयोग करके wsdl स्थान का उल्लेख करें। लेकिन फिर इस दृष्टिकोण के साथ आपको मैन्युअल रूप से wsdl को संशोधित करना होगा।

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