Soap 连接在 Java 客户端中超时,但在 SOAPUI 中却没有超时

问题描述 投票:0回答:2

我使用

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

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

还有人遇到类似问题吗?

java soap jax-ws soapui
2个回答
0
投票

问题是我在代理后面。我做了不同的测试,发现使用网络浏览器(或 SoapUI)我能够访问资源,但从命令行它不起作用。

经过大量搜索,这是一个简单的修复:要么将属性作为 jvm 参数传递,要么使用

System.setProperty("java.net.useSystemProxies", "true")
在代码中手动设置它。 JVM 本身没有使用代理。

编辑

正如我使用的

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

另一个编辑

如果您碰巧遇到问题,并且您正在使用应用程序服务器通过代理发出肥皂请求,则可能需要在

服务器的配置
中指定 java.net.useSystemProxies=true(或类似内容)——例如 catalina。如果使用 tomcat,则属性。


0
投票

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

如何在java中使用HTTP代理

java程序中的代理设置

如果您使用带有身份验证的代理,那么您已将身份验证器与代理一起设置。答案就在这里。

使用 Java 进行身份验证的 HTTP 代理

编辑:

您已设置在调用之前设置属性。 此外,我建议在获得响应后立即使用

System.clearProperty(key)
清除该属性,因为该属性已设置,直到 jvm 重新启动,因此可能会导致其他传出连接出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.