2014-02-20 119 views
0

我想在servlet之間共享數據庫連接。servlet之間共享連接池

我創建的連接池,我獲得這樣的

Context envContext = (Context)context.lookup("java:/comp/env"); 
dataSource = (DataSource)envContext.lookup("jdbc/limedb"); 

DataSource對象現在,我想與大家分享的servlet中此數據源對象,這樣每個Servlet可以做

connection = dataSource.getConnection(); 

獲得自己的連接。

達到此目的的最佳方法是什麼?我想在應用程序啓動時創建池並將其存儲在某處...

+0

......爲什麼池如果servlet的需要共享完全相同的連接?你是否真的確定這是你想要的?這似乎是一個併發地獄。 – Gimby

+0

如何讓他們共享相同的連接呢? – Phate

+1

我相信這是一個重大的誤解。該池已在應用程序啓動期間創建並存儲!通過'context.lookup()'你只需要獲得對它的引用......更簡潔的方法是使用'@ Resource'。 – BalusC

回答

1

實際上有幾種方法可以做到這一點。

  1. 您可以使用依賴注入框架爲您管理那些 連接。在幕後它將使用對象池。
  2. 您可以創建一個管理包含數據源的對象池的單例對象。
  3. 你可以編寫一個包含返回連接的代碼的單例,所以你不必知道你正在使用一個數據源。

這一切都取決於所使用的情況下,你是多麼熟悉Java,您的應用程序的整體設計等

相關問題