JAX-WS - 具有不同WSDL URL的端口类型对象

时间:2013-09-07 03:14:22

标签: java jax-ws stubs porttype

我有一个.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的原因。任何人,请帮助我理解。

此外,是否可以采取任何措施来减少创建端口类型对象所需的时间。

提前致谢!

1 个答案:

答案 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不同时,这非常有用,例如当您从开发环境更改为生产环境时。