生成されたコード(例: "HelloWorldWebServiceImplService")では、META-INFの下にあるWSDL urlまたはwsdlファイルを参照する先頭の静的ブロックを調べます。
/*
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;
}
*/
あなたは、デフォルトのコンストラクタをコメントアウトする必要があり、これをコメントするとし、静的WSDL_LOCATION = nullをintialize言うまでもないです。 (nullに) 以下のように2つのコンストラクタはありません。 Webサービスを呼び出す
public final static URL WSDL_LOCATION = null;
public HelloWorldWebServiceImplService(URL wsdlLocation) {
super(wsdlLocation, SERVICE);
}
public HelloWorldWebServiceImplService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
:は今、あなたは
//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);
を示すように、このオブジェクトが引数としてWebサービスのURLを渡してインスタンス化し、クライアントの呼び出しでだからここにあなたが動的にWebサービスのURLを指すことができます。
ちょうど私は理解しています... MyServiceはWSDLを要求し、タグにあるものを使用して実際にサービスがどこにあるかを判断します。 –
私はそれが正しいと思う、私はそれを見てみましたが、私は明確に答えて何も見つけることができません。 –
はい。 JAX-WSはwsdlLocationでWSDLをロードし、serviceNameおよびportNameで指定されたサービスおよびポートのWSDLをそれぞれ解析します。 JAX-WSは、Webサービスを呼び出すときにWSDLポートで指定されたURLを使用します。したがって、上記のコードを使用してリモートサービスと対話するには、WSDL URL、サービスQName、およびポートQNameを知る必要があります。 – DavidValeri