我有一个.Net Webservice,我使用JAX-WS为它生成存根(在本地下载了WSDL和XSD)。现在我将存根打包在一个jar(stubs.jar)和WSDL以及其他jar中的XSD(wsdl.jar)。
我使用如下的存根:
URL url = ServiceClient.class.getResource("MyService.wsdl");
MyService service = new MyService(url,new QName(namespaceURI,localName));
MyServicePortType portType = service.getMyServicePort();
BindingProvider bp = (BindingProvider) portType;
//WSDL_URL is the actual endpoint address
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSDL_URL);
虽然一切正常,但在调试过程中我注意到端口类型对象创建需要花费很多时间。
此外,调试时的端口类型对象将WSDL URL显示为远程URL(甚至在将其类型转换为Binding Provider对象之前)。
我无法在Port类型对象中找出更改的WSDL URL的原因。任何人,请帮助我理解。
此外,是否可以采取任何措施来减少创建端口类型对象所需的时间。
提前致谢!
答案 0 :(得分:0)
第一次MyService
从WSDL文档文件(本地文件)获取URL。因为加载文件,需要更长的时间。这应该只在申请开始时进行。
MyService service = new MyService(url, new QName(namespaceURI, localName));
然后,您自定义端点URL。
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSDL_URL);
如果网址相同,也许您可以避免此步骤。当URL不同时,这非常有用,例如当您从开发环境更改为生产环境时。