jaxws cxf客户端在多次调用后挂起

时间:2014-06-07 08:14:37

标签: java jax-ws cxf webservices-client

Jaxws cxf客户端在多次调用同一端口后挂起

我在tomcat7上运行了一个jaxws cxf客户端应用程序。

我有一个非常奇怪的问题,在多次顺序调用webservice服务器之后,在某些时候JaxwsClientProxy挂起并且由于socketexception后跟连接超时而导致无法发送消息错误。

连接超时和请求超时都已设置为5分钟。更奇怪的是,这种行为可能因机器而异。

例如,在我自己的计算机(Mac)上,这种情况不会发生,并且一切正常,但在其他一些机器(Windows)和生产环境(Linux)上存在这个问题。

我一直在敲我的头一个星期,到目前为止没有运气。我使用以下框架:

- Spring 2.5
 - Jaxws CXF 2.7.11
 - Java 1.6.0_45
 - Tomcat 7

这可能是JVM错误还是什么?有一些论坛讨论这个问题,但大多数论坛都是在jboss上运行,并且解决方案对我不起作用。

我试图更改Jaxws和cxf版本,但没有区别。这是一个代码演示:

GreetingsWebService service = new GreetingsWebService();
GreetingsPort port = serive.getGreetingsPort();
port.call1(); // success
port.call2(); // success
port.call3(); // error

非常感谢任何建议

1 个答案:

答案 0 :(得分:0)

我实际上解决了我的问题。答案是如果你使用带有jaxws 2.2.x的java 1.6,你需要在java endorsed或tomcat认可的directorties中复制jaxws-api.jar和jaxb-api.jar。还要确保使用jaxws 2.2生成对象。

如果你没有复制内存中的jar,java会拾取旧的jaxws默认jar,这会导致奇怪的问题。还试图关闭allowJunk,因为一些旧的服务器和代理不支持垃圾。