2

我已经编写了一个 java webservice,将它部署在我的 tomcat 上,并通过我的 webbrowser 访问了服务 WSDL,一切看起来都很好。下一步是生成代理类,客户端可以使用它与网站进行通信。这就是我接下来所做的:

假设我的 wsdl 可以通过以下方式访问:http://localhost:8080/testSvc/testSvc?wsdl

使用 wsimport 工具,我使用以下命令生成代理: $>wsimport http://localhost:8080/testSvc/testSvc?wsdl

问题是 localhost:8080 在生成的类中被硬编码,如果我将服务部署在 8080 以外的端口上,则客户端无法访问它,因为客户端仍会尝试访问端口 8080 上的服务。

有没有以端口号不是硬编码的方式开发代理类?这样我们就可以在任何端口上部署服务?

我尝试更新 ENDPOINT_ADDRESS_PROPERTY 但这没有用,因为代码在实例化代理类的实例时失败。它从来没有真正达到我可以覆盖它已经从代理类准备好的 ENDPOINT_ADDRESS 的地步。

4

2 回答 2

6

一种方法是使用 wsimport 参数

-wsdllocation <location>

并将其指向您的新 WSDL。

或者您可以使用

-目录选项。

要动态更改地址,请使用如下代码:

service = new Service();
port = service.getxxxPort();

((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newUrl);
于 2010-09-13T20:35:11.523 回答
-1

使用-keep 参数保留 wsimport 生成的源文件。从那里,您可以根据需要更改 wsimport 生成的源代码中的端点 url。

于 2010-09-10T03:39:24.277 回答