簡體   English   中英

Axis2 java web 服務客戶端超時后導致的問題

[英]Problems caused by Axis2 java web service client after a timeout

我有以下問題:
- 生成語音 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 塊中后,我捕獲異常並從該方法返回。
- 平均而言,由於計時器在打開連接或讀取 web 服務調用的結果時到期 - 在 WAS 上 - 每小時引發大約 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 次。
- 翻閱日志,除了由於超時到期而捕獲的異常外,我什么也沒發現,也許還有更多的東西,但我還沒有找到。


- 在上述情況下我應該考慮哪些指導點? 如果不是,我可以編寫一個清理代碼來釋放連接嗎? 我們能從上面的描述中確定問題的根本原因嗎? 應用服務器的行為是否“正常”?


對於冗長的描述/問題,我深表歉意,我總是感謝您的幫助!

據我了解,服務器報告的 tineout 錯誤為 60000 毫秒。 巧合的是,這 60 秒是 IBM IHS 服務器的默認超時,因此您的問題很可能與此有關。

假設您希望您的請求在服務器上處理的時間超過 60 秒,您可以通過編輯 /opt/WebSphere70/Plugin/config/SERVERNAME/plugin-cfg.xml 來增加此超時

查找 ServerIOTimeout="60" 並將值更改為大於 60 秒。

[編輯]

您也可以通過管理控制台查看此設置...

服務器 > Web 服務器 > SERVERNAME > 插件屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM