考虑在浏览器中运行的小程序中的以下代码段:
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 上运行)。
一切正常,除了我注意到以下两个刺激物:
- 执行上面引用的代码块需要很长时间
- 网络跟踪显示客户端发送 HTTP GET 请求:/MYWSAPP/META-INF/services/javax.xml.ws.spi.provider 和 /MYWSAPP/META-INF/services/javax.xml.stream.XMLInputFactory。
这些 GET 请求的回复是 HTTP/1.1 404 Not Found。
关于如何防止这些不必要的 HTTP GET 请求的任何想法?上面的代码执行大约需要 3 秒,而实际的 Web 服务调用执行时间不到 100 毫秒,这是否合理?