[英]Web-Service on Tomcat with Timeout
我有一個應用程序運行大約 30 分鍾。 一些輸入數據。 它還具有測試數據,因此應用程序大約需要 30 秒。
該應用程序應該在網絡服務中可用。 我使用了 CXF 和 tomcat。 使用測試數據一切正常。 對於真實數據,大約 1 分鍾后會出現超時:SocketTimeoutException
我查看了所有超時參數(server.xml,所有 web.xml),但沒有幫助。
我的應用程序非常消耗內存。 我將此 vm 值添加到服務器 -Xmx1600m。 沒有,我得到一個 OutOfMemoryException
知道我還能嘗試什么嗎? 我可以在關卡會話中設置內存嗎? 謝謝!
免責聲明:我從未與CXF合作過
這篇博客在這里描述了與你的超時非常相似的情況。
給出的示例代碼表明使用帶有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(...);
您的問題是 outOfMemory,您能否嘗試將參數 -Xmx1600m 更改為 -Xmx2048m 或更多。 它進入文件/etc/init.d/tomcat
### BEGIN INIT INFO
# Provides: tomcat8
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Tomcat 8
# Short-Description: start and stop tomcat
### END INIT INFO
## Source function library.
#. /etc/rc.d/init.d/functions
#export JAVA_HOME=/usr/java/default
export JAVA_HOME=/opt/jdk1.8.0_201
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
-Dnet.sf.ehcache.skipUpdateCheck=true \
-XX:+UseConcMarkSweepGC \
-XX:+CMSClassUnloadingEnabled \
-XX:+UseParNewGC \
-XX:MaxPermSize=256m \
-Xms512m -Xmx2048m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/opt/tomcat-latest
TOMCAT_USER=root
SHUTDOWN_WAIT=20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.