【问题标题】:SOAP Client Port ConfusionSOAP 客户端端口混淆
【发布时间】:2011-04-26 13:22:09
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 这是什么语言和平台?
  • @John Saunders wsimport 是 Java 6 附带的 JAX-WS 工具,所以语言是 Java,而平台......好吧,这不重要。 :)
  • @Joshua:谢谢。你是说这是否在 j2ee 上运行并不重要?
  • @John:wsimport 随 JDK (Java SE) 一起提供,所以是的。

标签: java soap proxy wsimport


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多