Possiedo un servizio Web basato su JAX-WS il cui WSDL viene generato da un altro modulo Maven (che chiamerò ws-consumer
).Controllo del valore dell'attributo wsdlLocation JAX-WS (percorso assoluto) con jaxws-maven-plug
bene o nel male, copiamo il "WSDL pubblicati" (la versione del WSDL & XSD che il servizio ha tenuto/generato a punto di rilascio) al nostro cartella src/wsdl
di ws-consumer
e quindi utilizzare jaxws-maven-plugin
da org.jvnet a generare un client utilizzando jaxws:wsimport
con la seguente configurazione (troncato):
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<!--phase>generate-sources</phase -->
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlDirectory>src/main/resources/META-INF/wsdl/</wsdlDirectory>
<wsdlFiles>
<wsdlFile>MyWS/MyWS.wsdl</wsdlFile>
</wsdlFiles>
</configuration>
</execution>
</executions>
</plugin>
Ora, il codice client generato ha le seguenti annotazioni applicate a livello di classe:
@WebServiceClient(name = "MyWS", targetNamespace = "http://myws/blah", wsdlLocation = "**file:/C:/some/absolute/path/src/main/resources/META-INF/wsdl/MyWS/MyWS.wsdl"**)
sottolineatura mia
Come si può vedere si spera, il valore dell'attributo wsdlLocation
ha un percorso assoluto hard-coded che sta per essere corretto quando il servizio viene distribuito.
C'è un modo per "controllare" questo impostandolo su solo META-INF/wsdl/MyWS/MyWS.wsdl
o qualche altro valore?
Questo era fondamentalmente la risposta. jaxws-maven-plugin fornisce wsdlLocation che può eseguire il jolly ma sovrascrivere il valore WebServiceClient.wsdlLocation generato. Grazie! –
@McDowell - Penso che il plugin codehaus sia stato migrato su jax-ws-commons. Per http://jax-ws-commons.java.net/jaxws-maven-plugin/: 'Questo plugin contiene l'adattatore Maven per il set di strumenti di JAX-WS. La versione originale di questo è stata sviluppata nel progetto codehaus mojo, ma a marzo 2007 il progetto è stato spostato su jax-ws-commons. – Cheeso
@atc cosa hai inserito in wsdlLocation? Poiché abbiamo anche cercato di individuarlo nella cartella in cui si trova il nostro WSDL, via 1) aggiungi src/main/wsdl e in questo caso: abbiamo il file WSDL (Soap_1.wsdl) in WEB-INF/classi generati WAR 2) basta mettere Soap_1.wsdl wsdlLocation>. Ma ancora non funziona. Come l'hai aggiustato nel tuo caso? –