我正在使用wsimport生成SOAP客户端类。但问题是,当服务器在端口8080上运行时,有一个代理可以从端口80上的Internet访问它。在WSDL中,仍然指定了服务器端口8080。
现在当我连接到服务器时,客户端请求的第一件事是WSDL。然后它检索此WSDl中的URL并尝试使用它连接到服务器,这显然会因为无法从外部访问端口8080而失败。
是否有解决此问题的标准方法?
感谢。
答案 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