我有以下问题:
- 一个生成语音XML的Java Web应用程序 - 基于struts - 部署在IBM WebSphere AS(WAS v.7.0.0.7)上。
- 应用程序使用Axis2 java - v.1.5 - Web服务客户端调用驻留在WebLogic AS上的Web服务。
- 我使用以下方法将超时设置为1000毫秒
stub.getServiceClient().getOptions().setTimeOutInMilliSeconds(1000);
- 应用程序访问Web服务的最大次数约为每小时25,000次 - 大约7次并发呼叫。
- 在try-catch块中放入调用Web服务的代码后,我捕获异常并从方法返回。
- 平均而言,由于计时器在打开连接或读取Web服务调用结果时到期,因此每小时会抛出大约200个异常 - 在WAS上
- 记录
exception.getMessage();
我得到以下任何一种,主要是第一种:
org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 60000 ms
或
org.apache.axis2.AxisFault: Read timed out
- 问题是一段时间后,应用服务器挂起,没有响应传入的请求,或者一段时间后响应,这使我们重新启动应用服务器,它在10天内发生了大约3次。
- 查看日志,除了由于超时到期而被捕获的异常外,我什么也没找到,也许有些东西说的更多,但我还没有找到它。
- 在上述情况下,我应该考虑哪些指导点?是否有一个清理代码我可以编写以释放连接,如果不是?我们可以从上面的描述中确定问题的根本原因吗?应用程序服务器的行为是否“正常”?
我为长篇描述/问题道歉,我非常感谢您的帮助!
答案 0 :(得分:0)
根据我的理解,从服务器报告的tineout错误为60000ms。巧合的是,这60秒是IBM IHS服务器的默认时间,所以您的问题很可能就是这样。
假设您希望在服务器上处理超过60秒的请求,可以通过编辑/opt/WebSphere70/Plugin/config/SERVERNAME/plugin-cfg.xml来增加此超时
查找ServerIOTimeout =“60”并将值更改为大于60秒。
[编辑]
您也可以通过管理控制台查看此设置...
服务器> Web服务器> SERVERNAME>插件属性