SOAP客户端端口混淆

时间:2011-04-26 13:22:10

标签: java soap proxy wsimport

我正在使用wsimport生成SOAP客户端类。但问题是,当服务器在端口8080上运行时,有一个代理可以从端口80上的Internet访问它。在WSDL中,仍然指定了服务器端口8080。

现在当我连接到服务器时,客户端请求的第一件事是WSDL。然后它检索此WSDl中的URL并尝试使用它连接到服务器,这显然会因为无法从外部访问端口8080而失败。

是否有解决此问题的标准方法?

感谢。

1 个答案:

答案 0 :(得分:2)

如果您的客户端代码成功获得WSDL,那么您可以使用以下内容明确指定端点地址:

ExampleService exampleService = new ExampleService();
Example example = exampleService.getExamplePort();
BindingProvider bindingProvider = (BindingProvider) example;
bindingProvider.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://ws.someservice.com:80/soap/ExampleBean");

最后一行覆盖了WSDL中的端口URL,这是内部URL。

我在这里有更多关于使用wsimport的详细信息:http://shrubbery.homeip.net/c/display/W/Consuming+a+Web+Service+with+Java+6+and+JAX-WS