繁体   English   中英

Soap Connection在Java客户端中超时,但在SOAPUI中超时

[英]Soap Connection timed out in Java client but not in SOAPUI

我用wsimport和给定的wsdl创建了一个肥皂客户端。 我还使用了SoapUI来测试服务。 使用SoapUI我没问题,但是当我使用Java客户端时,

java.net.ConnectException: Connection timed out: connect

我在requestContext中拥有的默认值如下

com.sun.xml.internal.ws.connect.timeout=100000
javax.xml.ws.service.endpoint.address=[fully qualified domain name endpoint]
com.sun.xml.internal.ws.request.timeout=100000
javax.xml.ws.soap.http.soapaction.use=null
com.sun.xml.internal.ws.client.ContentNegotiation=none
javax.xml.ws.soap.http.soapaction.uri=null

我尝试增加超时时间,但仍然无法连接。

还有其他人有类似的问题吗?

问题是我在代理后面。 我进行了不同的测试,发现使用Web浏览器(或SoapUI)可以访问该资源,但无法从命令行访问该资源。

经过大量搜索之后,这是一个简单的解决方案:将属性作为jvm参数传递,或者使用System.setProperty("java.net.useSystemProxies", "true")在代码中手动设置。 JVM并不是单独使用代理。

编辑

当我使用wsimport我有一个jax-ws客户端。 在实例化之前配置代理设置很重要。

另一个编辑

如果您偶然遇到问题,并且正在使用应用程序服务器通过代理发出Soap请求,则可能必须在服务器的配置中指定java.net.useSystemProxies=true (或类似值),例如catalina .properties(如果使用tomcat)。

正如您提到的问题是代理,以下链接已回答该问题。

如何在Java中使用HTTP代理

Java程序中的代理设置

如果您将代理服务器与身份验证一起使用,则必须将身份验证器与代理服务器一起设置。 在这里回答。

通过Java认证的HTTP代理

编辑:

正如威廉·伯纳姆(William Burnham)正确提到的那样,您已经设置了要在调用属性之前设置的属性。 此外,我建议您在使用System.clearProperty(key)获得响应后立即清除该属性,因为该属性是为jvm的完整实例设置的,直到重新启动它为止,因此可能导致其他传出连接出现问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM