WSDLException ...尝试解析模式时发生错误...连接超时:连接

时间:2015-05-24 19:04:35

标签: java wsdl webservice-client

首先,我的错误几乎与此问题中报告的错误相同:WSDLException : An error occurred trying to resolve schema referenced at

以下是我的堆栈转储的片段:

javax.wsdl.WSDLException: WSDLException (at /definitions/types/xs:schema/xs:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'http://www.w3.org/2005/05/xmlmime', relative to 'http://server.subdom.domain.com:13080/SM/7/Common.xsd'.: java.net.ConnectException: Connection timed out: connect] MDC{}
2015-05-24 14:36:33,751 ERROR (c.d.g.w.c.ContexteApplicatif.contextInitialized) [main] catching MDC{}
javax.xml.rpc.ServiceException: Error processing WSDL document: 
javax.wsdl.WSDLException: WSDLException (at /definitions/types/xs:schema/xs:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'http://www.w3.org/2005/05/xmlmime', relative to 'http://server.subdom.domain.com:13080/SM/7/Common.xsd'.: java.net.ConnectException: Connection timed out: connect
      at org.apache.axis.client.Service.initService(Service.java:250) ~[axis-1.4.jar:?]

这发生在从Eclipse中运行的嵌入式Tomcat服务器中。它在Windows机器上运行,系统级别有一个httpProxy。但是,URL是不需要代理的内部地址。无论如何,我在编写WSDL文件之前使用以下代码以编程方式实现了代理:

System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "proxyhost.subdom.domain.com");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "proxyhost.subdom.domain.com");
System.setProperty("https.proxyPort", "8080");

现在我收到HTTP 502错误,指示网关错误。所以,我认为这个解决方案是错误的,因为我不应该首先需要代理。我可以在浏览器中访问该页面,如果我启用或禁用代理设置,则会模糊不清。此外,还有一个配置代理的脚本,如果我使用上面显示的代理主机并在浏览器中硬编码而不是“系统代理”或“自动设置”,则无法访问该页面。

总结一下,它表现得像需要代理设置,但事实并非如此。问题出在其他地方,我不知道如何在调试此问题方面取得重大进展。

任何提示? Tomcat有什么用? Eclipse的东西?

我还没有在独立的Tomcat服务器上尝试过,因为我的代码还没有为部署做好准备。

注意: BTW,我尝试了引用帖子中的命令,我也得到了同样的错误。连接超时没有为代理定义的系统属性,否则为502代码。同时,如果我从Eclipse启动Web Service Explorer,我完全可以访问Web服务并调用操作。

进一步调查:我决定使用WireShark来查看请求发生了什么,并且看起来HTTP请求(wsdl和公共类型定义)都没有出现故障且没有连接完全超时,没有一个错误。我可以在WireShark中看到XML,HTTP状态是200 OK,在这个级别上一切都很好。

那么,这里发生了什么?我在Linux服务器上遇到同样的问题,而消息有点不同。 wsdl2java正在做什么来相信存在问题并中止?

1 个答案:

答案 0 :(得分:0)

经过Axis2和CXF的进一步调查和测试后,我终于找到了问题,这要归功于CXF版本的wsdl2java脚本,它提供了更多细节。

首先,提出的原始解决方案几乎是正确的。我实际上需要添加所有代理信息,但是我还需要指定非代理主机,否则我会收到502错误。来自Axis脚本的消息并没有详细说明有问题的请求,而CXF的版本非常清晰,使我能够最终解决我的问题。

因此,此外,如果您修改wsdl2java脚本,请添加-Dhttp.nonProxyHosts = ...以及其他选项。如果您需要以编程方式指定代理,也是一样。