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

时间:2018-05-29 08:56:17

标签: java soap jax-ws soapui

我创建了一个带有wsimport和给定wsdl的soap客户端。我还使用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

我已尝试增加超时但仍无法连接。

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

2 个答案:

答案 0 :(得分:0)

问题是我是代理人的幕后黑手。我做了不同的测试,发现使用Web浏览器(或SoapUI)我能够访问资源,但是从命令行无法访问。

经过多次搜索,这是一个简单的修复:要么将属性作为jvm参数传递,要么使用System.setProperty("java.net.useSystemProxies", "true")在代码中手动设置它。 JVM本身没有使用代理。

修改

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

另一个编辑

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

答案 1 :(得分:0)

正如您所提到的,问题是代理问题,已在以下链接中得到解答。

How to use an HTTP proxy in java

Proxy settings in a java program

如果您使用代理进行身份验证,那么您已将身份验证器与代理一起设置。这在这里得到解答。

Authenticated HTTP proxy with Java

修改

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