java - SOAP 客户端端口困惑

标签 java soap proxy wsimport

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

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

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

谢谢。

最佳答案

如果您的客户端代码成功获取 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

关于java - SOAP 客户端端口困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791002/

相关文章:

java - xsl :apply-templates/xsl:with-param with Xalan-J and saxon compared to xsltproc 的意外行为

java - 尝试读取 java 中的字符数组

php - 使用 Guzzle HTTP 客户端时如何禁用代理?

c# - 温莎城堡 : How to retrieve proxy for specific instance?

java - JAXB异常处理

java - 在 groovy 中使用 JAXB 解码对 java POJO 的 SOAP 响应

java - 基本身份验证在 Spring-Boot WS Soap 服务中不起作用

php - 使用 PHP 调用具有多个绑定(bind)的 WCF Web 服务

grails - 如何在Grails Controller 中获取原始二进制内容

java - 使用 Spring EL 将值设置为 lambda