【问题标题】:WSDL over HTTPS in JavaJava 中基于 HTTPS 的 WSDL
【发布时间】:2014-02-26 17:46:27
【问题描述】:

我们有一个 Java 客户端(不是 Web 应用程序,只是一个用 Java 编写的简单批处理) 它必须通过 https 连接到 Web 服务。 Web 服务位于 Apache Tomcat 服务器 (7.0) 但我没有直接链接到它,因为有一个 IIS 反向代理 它通过 https 公开服务,因此证书位于 IIS 层 不在Tomcat中。 我注意到 WSDL 中有一些奇怪的地方,即服务部分仍然有这样的地址

<soap:address location="http://myApp.it:80/Questionario/CallQuestionario"/>

因为它也是类型部分:

<xsd:schema>
<xsd:import namespace="http://www.test.it" schemaLocation="http://myApp:80/Questionario/CallQuestionario?xsd=1"/>
</xsd:schema>

我仍然看到指向 http 而不是 https 的位置和 schemaLocation! 事实上,我在尝试连接到 Web 服务时遇到错误: com.sun.xml.internal.ws.client.ClientTransportException:HTTP 传输错误:java.net.ConnectException:连接被拒绝:连接

您认为在 IIS 层中需要做一些工作来解决这个问题吗? 即使我尝试使用 Soap-UI 进行连接,我也会遇到此错误: java.lang.Exception: 加载 url 失败; https://myApp.it:80/Questionario/CallQuestionario?wsdl, 0 - 看起来对 Web Service 的分析失败了。

PS: 相反,如果我使用 keytool 实用程序为 Tomcat 创建证书并配置 Tomcat 编辑 server.xml 文件,我会注意到, 在不更改服务代码的情况下,该部分会在服务和类型部分中使用 https 中的 url 值自动更新。 在这种情况下(在 https 中部署在 Tomcat 上的 Web 服务),在使用以下代码行在客户端中导入证书后

    System.setProperty("javax.net.ssl.trustStore", "[PATH_TO_THE_CERTIFICATE]");
System.setProperty("javax.net.ssl.trustStorePassword", "[PWD]");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");

一切都按预期进行。

【问题讨论】:

    标签: java web-services tomcat soap wsdl


    【解决方案1】:

    这符合预期。 IIS 本质上充当了指向 Tomcat 的代理,因此 Tomcat 对 IIS 毫无概念。 Tomcat 仅通过 HTTP 公开,因为到 IIS 的连接可能是 HTTPS,但从 IIS 到 Tomcat 的连接是通过 HTTP。

    唯一的选择是让 IIS 与 HTTPS Tomcat 通信,这样当客户端尝试连接时,WSDL 会正确生成并在 WSDL 中显示端口 8443(默认 Tomcat HTTPS)。不过,大多数客户端允许您覆盖 WSDL 描述中的端口位置并输入您自己的位置,因此您可以告诉您的 WSDL 使用者这是他们必须做的。

    【讨论】:

    • 非常感谢您的回复,对不起,但我现在有一个问题,用 jax-ws 编写的 java 客户端如何在不更改 tomcat 配置的情况下与该 Web 服务通信?有没有办法覆盖端口位置?
    • 是的,看看这个答案stackoverflow.com/questions/5158537/… 你只是做同样的事情,但使用端口。
    • 好的,标记已勾选!我注意到现在即使我评论 System.setProperty 设置它仍然有效,这有点奇怪,客户端如何在不使用公钥的情况下对 https 连接进行密码处理?也许我错过了一些东西,无论如何现在它可以工作了!
    • 嗯,我知道你的意思,但我不确定我能否给你一个自信的答案。如果我是你,请尝试使用 HTTP 嗅探器来监听消息,看看它是否已加密,如果你真的想确定的话。
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2019-03-30
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多