2011-07-29 44 views
1

首先,我們正在運行在WAS 5.1上運行的Java Web應用程序。在這之後,我們使用Oracle數據庫。我們遇到的問題非常簡單,但經過幾個小時的Google搜索之後,我決定問你。當重新啓動數據庫時,Websphere應用程序服務器5.1數據源不再有效

我們有一個在WAS上運行的應用程序。當我們啓動服務器時,WAS設置他的DataSource,使它指向數據庫。一切工作正常,期望DBA必須重新啓動數據庫服務器。當他們這樣做時,數據源不再有效,我們必須手動重新啓動所有服務器,並且如果可能的話,我們正在嘗試糾正。我們需要找到一種方法來實現它,因爲我們的應用程序有3種預生產環境,並且有兩個服務器與之關聯,一個用於應用程序,另一個用於報告生成器Web服務。所以,當DBA想要重啓服務器時(他們通常不會告訴我們!),我們必須重啓六臺服務器。我想知道在Java中是否有重置數據源的方法,以便我們不需要重新啓動服務器。

有關您的信息,WebSphere是v5.1,Oracle是9g與Java 1.4.2.17。

我們還使用RAD:

版本:6.0.1 版本ID:20050725_1800

回答

1

您應該配置您的應用程序服務器始終測試租賃出來給客戶端之前的連接。我對Websphere並不熟悉,但在WebLogic中,您可以設置一個jdbc sql語句,例如select 2 from dual,並且容器會從連接池中刪除舊的連接。

這裏是如何做到這一點在WebSphere

http://www-01.ibm.com/support/docview.wss?uid=swg21439688

+0

我不太清楚這一點,但我真的不明白它的目的。我實際上得到了一個我管理的異常,但是當我捕捉到「套接字關閉」異常時,我想「刷新」數據源。我不需要重試獲得另一個連接,因爲它們都是無效的。例如:我啓動服務器,當它啓動時,我關閉VPN連接(數據庫在遠程網絡中)並重新連接。現在我的數據源無效,無論如何。我需要重新啓動服務器。在Websphere中一定有這樣的事情,不是嗎? – Sylvain

0

基於我從備忘閱讀,您會收到陳舊連接異常正如一個環節都有陳舊的句柄(在其池)爲數據庫已重新啓動。

數據源配置可以配置爲在檢測到過時連接後清除整個池。默認策略是清除單個連接。

採用此方法將阻止您重新啓動WAS服務器。

有許多資源,在這個空間 http://www-01.ibm.com/support/docview.wss?uid=swg21063645

HTH

Manglu

+0

其實,我得到一個說「連接重置」的SQLException。 StaleConnectionException不可用...如果我讀的是好的,我需要從Websphere jar庫中導入Jar文件utils.jar,但是由於應用程序足夠大,我不會提供這些信息。我得到了SQLException(我發現),但我需要一個Java過程來刷新池並刷新它。我不認爲這是可能的,但... – Sylvain

相關問題