2012-06-25 15 views
11

Tworzę usługę WebService w Javie przy użyciu JAXWS RI. Plik WSDL jest tworzony podczas automatycznego instalowania aplikacji WAR. Problem polega na tym, że chcę aby argumenty (które każda operacja otrzymała) w pliku WSDL miały znaczące nazwy, ale pojawiały się jako arg0, arg1, arg2 ... Czy istnieje sposób na zdefiniowanie nazw dla tych parametrów i nie używasz domyślnych nazw?Nazwy parametrów w WSDL o znaczącej nazwie

I wprowadziły następujące:

Interfejs WebService

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

Webservice Interfejs Implementacja

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

słońcem 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

Automatycznie generujesz WSDL ze swojej klasy usług internetowych? – Mac

+0

@Mac Tak, zredagowałem moje pytanie, aby wskazać na podstawie wygenerowanego WSDL – user1084509

Odpowiedz

22

Jeśli generowania WSDL z klasy usług internetowych, można dodać WebParam adnotacje (patrz here) do parametrów metod wymuszających nazywanie w WSDL. Na przykład:

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

Powyższy fragment konfiguruje JAX-WS do używania nazwy „bazArg” dla metody jest nazwą parametru w pliku WSDL.

+1

Dziękuję bardzo! Teraz działa – user1084509

+1

Fantastycznie! Cieszę się, że to załatwiłeś. – Mac

Powiązane problemy