2012-06-25 15 views
11

के साथ डब्लूएसडीएल में पैरामीटर नाम मैं जावा में एक वेब सेवा बना रहा हूं JAXWS आरआई का उपयोग कर। WSDL फ़ाइल स्वचालित रूप से एप्लिकेशन WAR को तैनात करते समय बनाई गई है। समस्या यह है कि मैं डब्लूएसडीएल फ़ाइल में महत्वपूर्ण नाम रखने के लिए तर्क (जो प्रत्येक ऑपरेशन प्राप्त करता है) चाहते हैं, लेकिन वे arg0, arg1, arg2 के रूप में दिखाई देते हैं ... क्या इस पैरामीटर के लिए नाम परिभाषित करने का कोई तरीका है और डॉन डिफ़ॉल्ट नामों का उपयोग नहीं करते?महत्वपूर्ण नाम

मैं निम्नलिखित को लागू किया है:

WebService इंटरफ़ेस

@WebService 
@SOAPBinding(style = Style.RPC) 
public interface WS2 { 
    @WebMethod String confirmaXML(String lrt_id); 
} 

WebService इंटरफेस कार्यान्वयन

@WebService(endpointInterface = "vital.tde.ws2.WS2") 
public class WS2Imp implements WS2{ 
    public String confirmaXML(String lrt_id) { 
     String respuesta = null; 
     //CODE 
     return respuesta; 
    } 

धूप में jaxws.xml

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints 
    xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" 
    version="2.0"> 
    <endpoint name="WS2" implementation="vital.tde.ws2.WS2Imp" url-pattern="/WS2" /> 
</endpoints> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>WS2</display-name> 
    <listener> 
    <listener-class> 
       com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
     </listener-class> 
    </listener> 
    <servlet> 
    <servlet-name>WS2</servlet-name> 
    <servlet-class> 
      com.sun.xml.ws.transport.http.servlet.WSServlet 
     </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>WS2</servlet-name> 
    <url-pattern>/WS2</url-pattern> 
    </servlet-mapping> 
    <session-config> 
    <session-timeout>120</session-timeout> 
    </session-config> 
</web-app> 
+0

आप स्वचालित रूप से डब्ल्यूएसडीएल को अपनी वेब-सेवा कक्षा से उत्पन्न कर रहे हैं? – Mac

+0

@ मैक हां, मैंने डब्ल्यूएसडीएल उत्पन्न होने के आधार पर इंगित करने के लिए मेरा प्रश्न संपादित किया – user1084509

उत्तर

22

आप अपने वेब सेवा वर्ग से अपने डबल्यूएसडीएल जेनरेट कर रहे हैं, तो आप WebParam एनोटेशन जोड़ने सकता है (डब्ल्यूएसडीएल में नामकरण लागू करने के लिए अपने तरीकों के मानकों के लिए here देखें)। उदाहरण के लिए:

@WebService 
public class FooService 
{ 
    @WebMethod(operationName = "barMethod") 
    public void bar (@WebParam(name = "bazArg") int baz) 
    { 
     ... 
    } 
} 

ऊपर टुकड़ा JAX-WS कॉन्फ़िगर डबल्यूएसडीएल में विधि के पैरामीटर नाम के लिए नाम "bazArg" का उपयोग करें।

+1

बहुत बहुत धन्यवाद! अब यह – user1084509

+1

शानदार काम करता है! मुझे खुशी है कि आपको इसका हल मिल गया। – Mac