代码之家  ›  专栏  ›  技术社区  ›  geco17

Java客户端中的Soap连接超时,但在SOAPUI中未超时

  •  3
  • geco17  · 技术社区  · 7 年前

    我用 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
    

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

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

    2 回复  |  直到 7 年前
        1
  •  0
  •   Shubham Kadlag    7 年前

    正如你提到的代理问题,下面的链接已经给出了答案。

    How to use an HTTP proxy in java

    Proxy settings in a java program

    如果您将代理与身份验证一起使用,那么您已经将authenticator与代理一起设置。这里有答案。

    Authenticated HTTP proxy with Java

    编辑:

    正如William Burnham正确地提到的,您已经设置好在调用属性之前设置属性。 此外,我建议您在收到系统响应后尽快清理该房产。clearProperty(key),因为该属性是为jvm的完整实例设置的,直到它重新启动,因此可能会导致其他传出连接出现问题。

        2
  •  0
  •   geco17    7 年前

    问题是我背后有个代理人。我做了不同的测试,发现使用web浏览器(或SoapUI)我可以访问资源,但从命令行它无法工作。

    经过多次搜索,这是一个简单的解决方案:要么将属性作为jvm参数传递,要么在代码中使用 System.setProperty("java.net.useSystemProxies", "true") .JVM没有单独使用代理。

    编辑

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

    另一次编辑

    如果您碰巧遇到问题,并且正在使用应用程序服务器通过代理发出soap请求,您可能需要指定 java.net.useSystemProxies=true (或类似)在 服务器的配置 --比如卡塔琳娜。属性,如果使用tomcat。