2012-06-25 9 views
11

JAXWS RIを使用してJavaでWebServiceを作成しています。 アプリケーションWARを自動的にデプロイするときにWSDLファイルが作成されます。 問題は、WSDLファイル内の引数(それぞれの操作が受け取る)を重要な名前にすることですが、arg0、arg1、arg2 ...と表示されます。 このパラメータの名前を定義する方法はありますか?デフォルトの名前を使用しないでください。WSDLの中で、かなりの名前を持つパラメータ名

私は次のことを実施しています

Webサービスインタフェース

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

Webサービスインタフェースの実装

@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

Webサービスクラスから自動的にWSDLが生成されますか? – Mac

+0

@Macはい、私は自分の質問を編集して、WSDLがどのように生成されたかを示しました – user1084509

答えて

22

あなたのWebサービスクラスからあなたのWSDLを生成している場合は、(WebParam注釈を追加しますhereを参照)をメソッドのパラメータに適用して、WSDLに名前を付けるようにします。たとえば:

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

上記のスニペットは、WSDLでメソッドのパラメータ名の名前「bazArg」を使用するJAX-WSを設定します。

+1

ありがとうございます!それは今働く – user1084509

+1

素晴らしい!あなたはそれを整理してうれしいです。 – Mac

関連する問題