首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中HTTPS上的WSDL

问Java中HTTPS上的WSDL
EN

Stack Overflow用户
提问于 2014-02-03 09:47:02
回答 1查看 4.8K关注 0票数 1

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

代码语言:javascript
复制
<soap:address location="http://myApp.it:80/Questionario/CallQuestionario"/>

正如它所做的那样,类型部分:

代码语言:javascript
复制
<xsd:schema>
<xsd:import namespace="http://www.test.it" schemaLocation="http://myApp:80/Questionario/CallQuestionario?xsd=1"/>
</xsd:schema>

我仍然看到位置和schemaLocation指向http而不是https!事实上,当我试图连接到Web : com.sun.xml.internal.ws.client.ClientTransportException: HTTP传输错误: java.net.ConnectException: Connection :Connection时,我得到了一个错误

您认为IIS层中有一些工作要解决这个问题吗?即使我试图使用Soap进行连接,我也有以下错误: java.lang.Exception: load url;https://myApp.it:80/Questionario/CallQuestionario?wsdl,0--看起来Web的分析失败了。

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

代码语言:javascript
复制
    System.setProperty("javax.net.ssl.trustStore", "[PATH_TO_THE_CERTIFICATE]");
System.setProperty("javax.net.ssl.trustStorePassword", "[PWD]");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");

一切都像预期的那样运转。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-03 09:54:48

这是意料之中的。IIS实际上是指向Tomcat的代理,因此Tomcat不知道IIS。Tomcat只公开通过HTTP连接到IIS (可能是HTTPS ),但从IIS到Tomcat则是通过HTTP进行的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21523996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档