2013-03-13 48 views
5

我似乎與this original SO question的海報具有相同的確切問題。什麼是關於數據庫和JNDI的驗證查詢?

的問題是,他回答說他自己有這樣的評論的問題:

我解決我的問題,我添加了一個validationQuery到我的JNDI數據源。

不幸的是,這對我來說並不意味着什麼,也不能幫助我解決問題。所以我問:關於我的數據庫(Sybase)和用於保存服務器查找信息的JNDI條目,什麼是「validationQuery」?

在此先感謝。

+0

請問這是[標籤:sybase-asa],[標籤:sybase-ase],[標籤:sybase-iq]還是[標籤:sqlanywhere]?試圖清理[標籤:SYBASE]標籤... – 2013-03-15 07:45:27

回答

8

驗證查詢是由數據源運行來驗證一個Connection仍返回之前開放查詢。這裏是Tomcat的definition of a validation query;向下滾動到「4.配置Tomcat的資源工廠」部分的中間,尋找「validationQuery」屬性。

編輯

this answer,如果驗證查詢失敗,不會引發錯誤;壞的/關閉的連接被丟棄,並且創建另一個連接來替換它。

+0

Thanks @rgettman(+1) - 所以這是一個查詢,我將Sybase(數據源)配置爲在返回連接之前運行。我假設它會拋出一個我可以捕獲的異常,或者返回一些我可以在應用程序端使用的錯誤值來確定連接不可用,並且我需要再次嘗試?再次感謝! – IAmYourFaja 2013-03-13 19:16:51

+0

另一件事:那篇文章沒有解釋當連接不可用時會發生什麼?拋出錯誤? – IAmYourFaja 2013-03-13 19:24:40

+0

我編輯了我的答案。 – rgettman 2013-03-13 19:26:51

1

我認爲它是測試數據庫連接工作正常查詢。在應用程序服務器級別進行某種ping操作。

在DB的原題週期性爆震保持打開的連接。

+0

感謝@Funtik(+1) - 請下rgettman的回答我的問題 - 我有同樣的問題爲您服務! – IAmYourFaja 2013-03-13 19:17:44

2

它是無關聯的JNDI,但JDBC數據源。

驗證查詢用於那些之前驗證從數據源連接池, 連接是越區切換到客戶機。通常這些都是低衝擊的查詢,如 「SELECT 1 ...」或「SELECT SYSDATE ......」

+0

謝謝@orid(+1) - 請參閱我的問題在rgettman的答案下 - 我對你有同樣的問題! – IAmYourFaja 2013-03-13 19:17:16