2013-01-08 61 views
1

我正在爲JBOSS AS.Code中配置的數據源進行jndi查找,如下所示。如何驗證連接池返回的連接對象?

initialContext = new InitialContext(props);

dataSource = (DataSource)initialContext.lookup(bundle.getString(「jndiName」));

connection = dataSource.getConnection();

這段代碼放在doPost的servlet中。此外,我很放心地打電話

connection.close()時

使用連接對象之後。

我的數據源配置具有以下條目

<min-pool-size>1</min-pool-size> 
<max-pool-size>1</max-pool-size> 

按我的連接池的理解,每次我做出的servlet相同的連接對象的請求被datasource .getConnection()調用返回(因爲我已經指定的最小值和最大值池大小爲1,並且關閉調用不會完全關閉數據庫連接)。

現在我如何驗證相同的連接對象正在返回?

+1

爲什麼要驗證連接對象?一種方法在本地緩存對象,然後檢查緩存的值。 –

+0

只是爲了確保連接不會每次都創建到數據庫。我發現沒有辦法檢查是否啓用或禁用共享池 –

+1

1種方法是檢查數據庫服務器以查看創建了多少個連接。 –

回答

0

你實際上不能確定它是否是相同的連接。這可能與連接數據庫有關,所以必須創建另一個連接。爲什麼你想驗證連接?也許你可以保存散列值並比較它們?

+0

只是爲了確保連接不會每次都創建到DB。我發現沒有辦法檢查是否啓用或禁用了共享池。 –

+0

當最小池大小爲0時,它是否會禁用池? –

+0

如果你只想看到這一點,試着打開你的連接池工具(可能是你正在使用DBCP)的日誌記錄和wathc日誌中發生了什麼。 – partlov