【发布时间】:2011-07-15 12:19:16
【问题描述】:
我有以下问题:
- 基于 struts 生成语音 XML 的 java Web 应用程序,部署在 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 个并发调用。
- 将调用 Web 服务的代码放入 try-catch 块后,我捕获异常并从方法返回。
- 在 WAS 上,由于计时器在打开连接或读取 Web 服务调用的结果时到期,平均每小时会引发大约 200 个异常
- 通过记录
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 次。
- 翻阅日志,除了因为超时而捕获的异常,我什么都没发现,也许还有什么要说的,但我还没有找到。
- 在上述情况下我应该考虑哪些指导点?如果不是,我可以编写一个清理代码来释放连接吗?我们能从上面的描述中确定问题的根本原因吗?应用服务器的行为是否“正常”?
对于冗长的描述/问题,我深表歉意,感谢您的帮助!
【问题讨论】:
标签: java timeout websphere axis2