我有一个运行大约 30 分钟的应用程序。一些输入数据。它还具有测试数据,因此该应用程序大约需要 30 秒。
应用程序应该在网络服务中可用。我使用了 CXF 和 tomcat。一切都适用于测试数据。对于真实数据,大约 1 分钟后会出现超时:SocketTimeoutException
我查看了所有超时参数(server.xml、所有 web.xml),但没有帮助。
我的应用程序非常消耗内存。我将此 vm 值添加到服务器 -Xmx1600m。没有,我得到一个 OutOfMemoryException
知道我还可以尝试什么吗?我可以在水平 session 上设置内存吗? 谢谢!
最佳答案
免责声明:我从未使用过 CXF
本博客here似乎在描述与您的超时非常相似的情况。
给出的示例代码表明使用 HTTPConduit
和 HTTPCLientPolicy
可以解决问题。
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(...);
关于java - Tomcat 上的 Web 服务超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472210/