我有一个应用程序,女巫运行大约30分钟。与一些输入数据。它还具有测试数据,因此该应用程序大约需要30秒。

该应用程序应该在Web服务中可用。我使用了CXF和tomcat。一切都与testdata正常工作。对于真实数据,大约1分钟后会发生超时:SocketTimeoutException

我查看了所有超时参数(server.xml,所有web.xml),但没有帮助。

我的应用程序非常消耗内存。我将此vm值添加到服务器-Xmx1600m。没有,我得到一个OutOfMemoryException

知道我还能尝试什么吗?我可以在级别会话中设置内存吗?
谢谢!

最佳答案

免责声明:我从未与CXF合作过

该博客here似乎在描述与超时非常相似的情况。

给出示例代码表示使用HTTPConduitHTTPCLientPolicy可以解决此问题。

MyWebService service = new MyWebService();
MyWebServicePortType client = service.MyWebServicePort();

Client cl = ClientProxy.getClient(client);

HTTPConduit http = (HTTPConduit) cl.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(0);
httpClientPolicy.setReceiveTimeout(0);

http.setClient(httpClientPolicy);

client.doSomething(...);

10-04 17:31