ブラウザ内のアプレットで実行される次のスニペットを考えてみましょう。
WebServiceClient s = MyWS_Service.class.getAnnotation(WebServiceClient.class);
String servicePath = pathName;
String wsdlLocation = "http//host.dns.name:80/MYWSAPP/MyWS?wsdl";
MyWS_Service service = null;
WebServiceClient s = MyWSService.class.getAnnotation(WebServiceClient.class);
try{
wsdlURL = new URL(wsdlLocation);
service = new myWSService(wsdlURL, new QName(s.targetNamespace(), s.name()));
myWS = service.getMyWSSOAP();
}catch (MalformedURLException e){
System.out.println ("unable to create wsdlURL = "+wsdlLocation);
}
myWS が問題なく作成された場合は、それを使用して Web サービス メソッドを呼び出します (Web サービスは Metro を使用し、Tomcat で実行されます)。
次の 2 つの刺激物に気づいたことを除いて、すべて正常に動作します。
- 上記のコードのチャンクを実行するには長い時間がかかります
- ネットワーク トレースは、クライアントが /MYWSAPP/META-INF/services/javax.xml.ws.spi.provider および /MYWSAPP/META-INF/services/javax.xml.stream.XMLInputFactory に対して HTTP GET 要求を送信していることを示しています。
これらの GET 要求に対する応答は、HTTP/1.1 404 Not Found です。
これらの不必要な HTTP GET リクエストを防ぐ方法について何か考えはありますか? また、実際の Web サービス呼び出しの実行に 100 ミリ秒もかからないのに、上記のコードの実行に約 3 秒かかるのは合理的でしょうか?