Dans votre code généré (par exemple: "HelloWorldWebServiceImplService") regardez dans le bloc statique en haut qui fera référence au fichier WSDL url ou wsdl qui se trouve sous META-INF.
/*
static {
URL url = null;
try {
url = new URL("http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
} catch (MalformedURLException e) {
java.util.logging.Logger.getLogger(HelloWorldWebServiceImplService.class.getName())
.log(java.util.logging.Level.INFO,
"Can not initialize the default wsdl from {0}", "http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
}
WSDL_LOCATION = url;
}
*/
Une fois que vous commentiez cela, vous devez également commenter le construtor par défaut et inutile de dire intialize la WSDL_LOCATION statique = null; (à null) Ainsi, vous n'aurez pas deux constructeurs comme indiqué ci-dessous.
public final static URL WSDL_LOCATION = null;
public HelloWorldWebServiceImplService(URL wsdlLocation) {
super(wsdlLocation, SERVICE);
}
public HelloWorldWebServiceImplService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
Appel Webservice: maintenant dans l'appel client où vous instancier cet objet, utilisez l'URL webservice comme argument comme indiqué
//You can read mywebserviceURL from property file as String.
String mywebserviceURL = "http://myqamachine.com/HelloWorld/HelloWorldWebServiceImpl?wsdl"
URL WsURL = new URL(mywebserviceURL);
HelloWorldWebServiceImplService webService = new HelloWorldWebServiceImplService(WsURL);
Alors là, vous pouvez pointer l'URL webservice dynamiquement.
Ok. Juste pour que je comprenne ... MyService demandera le WSDL et puis utilisera tout ce qui est dans la balise pour déterminer où le service est réellement? –
Je pense que c'est vrai, j'ai essayé de le chercher mais je ne trouve rien à répondre clairement. –
Oui. JAX-WS chargera le WSDL à wsdlLocation, puis analysera le WSDL pour le service et le port spécifiés par serviceName et portName, respectivement. JAX-WS utilisera l'URL spécifiée dans le port WSDL lors de l'appel du service Web. Ainsi, vous devrez connaître l'URL WSDL, le nom de service QName et le nom de port QName afin d'interagir avec le service distant en utilisant le code indiqué ci-dessus. – DavidValeri