2012-06-25 14 views
11

Sto creando un servizio Web in Java utilizzando JAXWS RI. Il file WSDL viene creato quando si distribuisce l'applicazione WAR automaticamente. Il problema è che voglio che gli argomenti (che ogni operazione riceve) nel file WSDL abbiano nomi significativi, ma appaiono come arg0, arg1, arg2 ... C'è un modo per definire i nomi per questi parametri e don usare i nomi predefiniti?Nomi parametro in WSDL con nome significativo

Ho implementato il seguente:

L'interfaccia WebService

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

il webservice interfaccia Attuazione

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

sole-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

Generando automaticamente il WSDL dalla classe del servizio Web? – Mac

+0

@Mac Sì, ho modificato la mia domanda per indicare in base a cosa viene generato il WSDL – user1084509

risposta

22

Se si sta generando il tuo WSDL dalla classe di servizio Web, è possibile aggiungere annotazioni WebParam (vedere here) ai parametri dei metodi per applicare la denominazione nel WSDL. Per esempio:

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

È possibile che questo frammento configura JAX-WS di utilizzare il nome "bazArg" per il nome del parametro del metodo nel WSDL.

+1

Grazie mille! Ora funziona – user1084509

+1

Fantastico! Sono contento che tu l'abbia risolto. – Mac

Problemi correlati