0

我有一个 .Net Web 服务,我使用 JAX-WS 为其生成存根(在本地下载了 WSDL 和 XSD)。现在我将存根打包在一个 jar (stubs.jar) 中,并将 WSDL 以及 XSD 打包在另一个 jar (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 对象之前)。

我无法确定端口类型对象中 WSDL 的 URL 更改的原因。任何人,请帮助我理解。

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

提前致谢!

4

1 回答 1

0

第一次MyService从 WSDL 文档文件(本地文件)中获取 URL。因为加载文件,所以需要更长的时间。这应该只在应用程序开始时完成。

MyService service = new MyService(url, new QName(namespaceURI, localName));

然后,您自定义端点 URL。

bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSDL_URL);

如果 URL 相同,也许可以避免这一步。这在 URL 不同时非常有用,例如当您从开发环境更改为生产环境时。

于 2013-09-07T03:48:42.280 回答