2011-08-20 55 views
2

我正在設計一個項目,每個客戶都有一個數據庫。我設法閱讀Tomcat文檔並建立連接池。由於數據庫是在客戶註冊時由應用程序自動創建的,因此我需要一種創建動態池的方法。在堆棧溢出以下職位給了需要什麼的提示:與Tomcat一起使用動態數據源 - 進一步的問題

Using dynamic Datasource with Tomcat

,我發現在網絡上展示如何做到這一點的頁面:

Writing and using a Tomcat ObjectFactory

我還是有幾個問題:

1-誰負責管理池中的連接? 在context.xml中的數據源聲明中,我們定義了一些控制各種方面的參數,如最大空閒時間和最大連接數等等。tomcat是否處理這個問題,還是我必須在實現中處理它,編寫實現ObjectFactory接口的類?

2-據我所知,當連接關閉時,他們返回到游泳池。假設我製作了一個擁有最多20個連接的動態池。然後有30個客戶登錄,因此該池爲前20個客戶返回20個連接。當這些連接關閉時,它們將返回到池中,接下來的10個客戶將要求連接到不同的數據庫,而不是已經在池中找到的數據庫。問題是:池會自動丟棄10個連接並添加新的正確數據庫?在這種情況下,如果沒有游泳池請求打開連接,這是否真的具有優勢? (如果我猜對了,那麼連接丟失的數量可能會非常高,以至於無法證明游泳池在做什麼:最大限度地減少從頭創建連接)

3-我也想問問自己是否可以實現它(考慮到我是新手)或者我應該找到一個能夠做到這一點的庫(如果它不是這個區域的初學者的任務)。

4-是否有任何連接池的替代品用於管理連接到以有效方式動態添加的多個數據庫? (如果數據源不起作用)類似情況下使用的方法是什麼?

非常感謝您的努力。

回答

0

在聲明一個數據源時,你可以指定一個數據源類,比如Oracle數據源。它使用指定的參數爲您管理數據源。最好讓數據源管理自己。我試圖寫一個,它並不簡單。

我認爲數據源不適合你,我可能是錯的。數據源需要數據庫url,用戶名和密碼,這些數據源將在數據源的生命週期中得到修復。

讓不同的用戶擁有不同的數據庫會破壞這個。

看看上面給出的參考資料,答案提到了使用與數據源不同的資源。

+0

感謝您的回答。我也認爲這是不可能的,直到我發現上面的鏈接顯示它是可能的。然後我問了上面的問題,以確保它的價值。否則我會發現雖然有可能太晚,但實際上並不實際。無論如何,基於你提到的,我將編輯並添加第四個問題。謝謝:) –

+0

我唯一發現的地方是Oracle WebLogic中的動態連接池和動態數據源。在此鏈接上,您可以搜索動態池和動態數據源:http://download.oracle.com/docs/cd/E13222_01/wls/docs81/jdbc/programming.html 這使您的答案正確無誤,因爲它不可能看起來像Tomcat一樣擁有動態數據源。即使這是可能的,但如你所建議的那樣非常困難。然後,我會再次提出採取什麼方法的另一個問題,我會接受你的答案。感謝您的幫助 :) –

相關問題