मैं एक क्लाइंट की डब्लूएसडीएल फ़ाइल के साथ काम कर रहा हूं जो इनपुट और आउटपुट संदेशों के लिए समान तत्व परिभाषा का उपयोग करता है, लेकिन मुझे जेएक्स-डब्ल्यूएस प्राप्त करने में परेशानी हो रही है/JAXB प्रतिक्रिया unmarshal करने के लिए।जैक्स-डब्ल्यूएस/wsimport शून्य वापसी के साथ WebMethod उत्पन्न करता है - एक ही अनुरोध/प्रतिक्रिया Wrapper
<wsdl:message name="invokeServiceRequest">
<wsdl:part element="impl:requests" name="multiRequestWrapper"/>
</wsdl:message>
<wsdl:message name="invokeServiceResponse">
<wsdl:part element="impl:requests" name="result"/>
</wsdl:message>
<wsdl:portType name="GCGatewayPortType">
<wsdl:operation name="requests">
<wsdl:input message="impl:invokeServiceRequest" name="invokeServiceRequest"/>
<wsdl:output message="impl:invokeServiceResponse" name="invokeServiceResponse"/>
</wsdl:operation>
</wsdl:portType>
किसी कारण से, कोड wsimport द्वारा उत्पन्न एक शून्य वापसी है, और INOUT पैरामीटर जब प्रतिक्रिया मिली अपडेट किए जाने की नहीं है।
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.1.7-b01-
* Generated source version: 2.1
*/
...
@WebMethod
@RequestWrapper(localName = "requests", targetNamespace = "http://cg.test.com/", className = "com.test.cg.RequestsType")
@ResponseWrapper(localName = "requests", targetNamespace = "http://cg.test.com/", className = "com.test.cg.RequestsType")
public void requests(
@WebParam(name = "paramOne", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
Holder<String> paramOne,
@WebParam(name = "paramTwo", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
Holder<String> paramTwo,
@WebParam(name = "requestList", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
Holder<List<RequestType>> requestList);
जब मैं port.request(paramOne, paramTwo, requestList)
कहते हैं, मैं देख सकता हूँ कि सोप अनुरोध सर्वर है, जो एक वैध सोप प्रतिक्रिया के साथ प्रतिक्रिया करने के लिए भेजा जाता है:
<soapenv:Envelope ...>
<soapenv:Header />
<soapenv:Body>
<requests ...>
<paramOne>1</paramOne>
<paramTwo>2</paramTwo>
<requestList>
<!-- various elements that JAXB has generated code for -->
हालांकि, जब मैं डिबग मोड में मेरी अनुप्रयोग चलाने , मैं डीबगर चर दृश्य में प्रत्येक RequestType
उदाहरण देख सकता हूं, लेकिन RequestsType
में <xsd:choice>
RequestData
या ResponseData
के साथ है, बाद वाला शून्य है और RequestData
जैसा मैंने प्रदान किया है।
मैंने अन्य परियोजनाओं पर सफलतापूर्वक जेएक्स-डब्ल्यूएस का उपयोग किया है, लेकिन उन मामलों में यह @WebResult
और वेबरसल्ट के नाम पर गैर-शून्य रिटर्न प्रकार के साथ कोड उत्पन्न करता है। इस प्रोजेक्ट में, मुझे लगता है कि मुझे WebResult नहीं मिल रहा है क्योंकि जेएक्स-डब्ल्यूएस ने फैसला किया है कि अनुरोध और प्रतिक्रिया प्रकार समान हैं और यह उसी ऑब्जेक्ट का पुन: उपयोग कर सकता है - लेकिन मैं उस ऑब्जेक्ट को डेटा से अपडेट करने के लिए कैसे प्राप्त करूं प्रतिक्रिया?
क्या आप अपना डब्लूएसडीएल दस्तावेज़ पोस्ट कर सकते हैं? – Phani