0

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

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

有没有解决这个问题的标准方法?

谢谢。

4

1 回答 1

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,这是内部的。

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

于 2011-05-10T16:28:26.183 回答