【问题标题】:Problems caused by Axis2 java web service client after a timeoutAxis2 java web service客户端超时后导致的问题
【发布时间】: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


    【解决方案1】:

    据我了解,服务器报告的 tineout 错误为 60000 毫秒。巧合的是,这 60 秒是 IBM IHS 服务器的默认超时,因此您的问题很可能与此有关。

    假设您希望服务器上处理请求的时间超过 60 秒,您可以通过编辑 /opt/WebSphere70/Plugin/config/SERVERNAME/plugin-cfg.xml 来增加此超时时间

    查找 ServerIOTimeout="60" 并将值更改为大于 60 秒。

    [编辑]

    您也可以通过管理控制台查看此设置...

    服务器 > Web 服务器 > SERVERNAME > 插件属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多