6

मेरे पास @WebService(targetNamespace = "mynamespace") के साथ एनोटेटेड बहुत सारे अंतराल हैं। प्रत्येक @WebResult और @WebParam की targetNamespace = "mynamespace" की समान परिभाषा है।मैं जेएक्स-डब्लूएस वेब सेवाओं में विश्व स्तर पर लक्षित नेमस्पेस को कैसे कॉन्फ़िगर कर सकता हूं?

क्या "mynamespace" का उपयोग डिफ़ॉल्ट रूप से targetNamespace के रूप में करने के लिए JAX-WS (मेट्रो कार्यान्वयन) को कॉन्फ़िगर करने का कोई तरीका है?

मैं बिना किसी विशेषताओं के एनोटेशन का उपयोग करना चाहता हूं और डुप्लिकेट घोषणाओं से छुटकारा पा सकता हूं, जैसे कॉन्फ़िगरेशन पर सम्मेलन की तरह।

उत्तर

2

केवल सेवा समाप्ति बिंदु इंटरफ़ेस या सेवा कार्यान्वयन सेम में targetNamespace डाल दिया।

/** 
* Annotated Implementation Object 
*/ 
@WebService(
    name = "CustomerService", 
    targetNamespace = "http://org.company.services" 
) 
public class CustomerService { 
    @WebMethod 
    @WebResult(name="CustomerRecord") 
    public CustomerRecord locateCustomer(
     @WebParam(name="FirstName") String firstName, 
     @WebParam(name="LastName") String lastName, 
     @WebParam(name="Address") USAddress addr) { 
     ... 
    } 
}; 

तो @WebResult या @WebParam कोई targetNamespace, डिफ़ॉल्ट वेब सेवा के लिए targetNamespace है।

दूसरी तरफ, आप सभी एनोटेशन से बच सकते हैं और केवल @WebService का उपयोग कर सकते हैं यदि आपको JAX-B के साथ कुछ कस्टम की आवश्यकता नहीं है।

JSR-181 Web Services Metadata for the JavaTM Platform

+6

में अधिक देखें जब मैं '@ WebResult' और कम से' @ WebParam' सोप प्रतिक्रिया में उत्पन्न एक्सएमएल सबसे बाहरी एक्सएमएल टैग के लिए एक नाम स्थान (जैसे 'है '), लेकिन आंतरिक लोग डिफ़ॉल्ट नामस्थान का उपयोग करते हैं (उदाहरण के लिए' <ग्राहक रिकॉर्डर> ')। पैरामीटर (' ' '' ns0: firstName> ') के बजाय होता है। – timomeinen

+0

एक व्यक्ति को लगता है कि उपर्युक्त उदाहरण काम करेगा, लेकिन दुर्भाग्यवश यह उपरोक्त समय के उल्लेखों को पसंद नहीं करता है। कुछ इतना आसान क्यों हासिल करना आसान नहीं है? इस नामस्थान को हर वेबपाराम और वेबरसल्ट एनोटेशन पर लगातार कॉपी और पेस्ट करने का कोई तरीका नहीं होना चाहिए। – GreenieMeanie

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