Soap 连接在 Java 客户端中超时,但在 SOAPUI 中未超时
Soap Connection timed out in Java client but not in 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
我试过增加超时时间,但仍然无法连接。
有没有其他人遇到过类似的问题?
问题是我使用了代理。我做了不同的测试,发现使用网络浏览器(或 SoapUI)我能够访问该资源,但从命令行它不起作用。
经过大量搜索,这是一个简单的修复:将 属性 作为 jvm 参数传递,或者在代码中使用 System.setProperty("java.net.useSystemProxies", "true")
手动设置它。 JVM 没有单独使用代理。
编辑
因为我使用 wsimport
我有一个 jax-ws 客户端。在实例化之前配置代理设置很重要。
另一个编辑
如果碰巧遇到问题并且您正在使用应用程序服务器通过代理发出 soap 请求,您可能必须在 服务器配置--例如catalina.properties如果使用tomcat.
正如您提到的代理问题,已在以下链接中得到解答。
Proxy settings in a java program
如果您使用带身份验证的代理,那么您已经设置了身份验证器和代理。在这里回答。
编辑:
正如 William Burnham 所正确提到的那样,您已设置为在调用属性之前对其进行设置。
此外,我建议您在使用 System.clearProperty(key) 获得响应后立即清除 属性,因为 属性 是为完整的 jvm 实例设置的,直到它重新启动,因此可能会导致问题其他传出连接。
我使用 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
我试过增加超时时间,但仍然无法连接。
有没有其他人遇到过类似的问题?
问题是我使用了代理。我做了不同的测试,发现使用网络浏览器(或 SoapUI)我能够访问该资源,但从命令行它不起作用。
经过大量搜索,这是一个简单的修复:将 属性 作为 jvm 参数传递,或者在代码中使用 System.setProperty("java.net.useSystemProxies", "true")
手动设置它。 JVM 没有单独使用代理。
编辑
因为我使用 wsimport
我有一个 jax-ws 客户端。在实例化之前配置代理设置很重要。
另一个编辑
如果碰巧遇到问题并且您正在使用应用程序服务器通过代理发出 soap 请求,您可能必须在 服务器配置--例如catalina.properties如果使用tomcat.
正如您提到的代理问题,已在以下链接中得到解答。
Proxy settings in a java program
如果您使用带身份验证的代理,那么您已经设置了身份验证器和代理。在这里回答。
编辑:
正如 William Burnham 所正确提到的那样,您已设置为在调用属性之前对其进行设置。 此外,我建议您在使用 System.clearProperty(key) 获得响应后立即清除 属性,因为 属性 是为完整的 jvm 实例设置的,直到它重新启动,因此可能会导致问题其他传出连接。