我需要一種方法來動態指定EJB中的持久性單元。JPA動態持久性單元名稱
簡化的例子:
我有使用多個數據庫的數據存儲的應用程序。 每個數據存儲在結構上都是相同的。 根據連接到應用程序的客戶端,我需要從 訪問特定數據存儲的數據。
因此,我想使用相同的EJB,以便業務邏輯不重複,但是隻需基於客戶端選擇正確的持久性單元。
到目前爲止,我只直接注入了實體管理器,其中持久化單元名稱是硬編碼的。 有沒有一種方法可以將實體管理器動態注入連接到EJB的所需持久性單元? 另外,可以在運行時動態添加持久性單元嗎? 我當前必須在persistence.xml文件中指定持久性單元。 理想情況下,我希望在系統運行時根據需要在服務器jdbc/db1,jdbc/db2等上創建池。然後,將這些添加到中央客戶端數據庫並將其鏈接到客戶端,這樣當客戶端連接時,它將檢查池的名稱,並在調用EJB來獲取持久性單元時使用它。
我還是Java EE開發新手。任何幫助將不勝感激。
這幾乎是我所需要的,但我仍然需要將每個持久性單元預先定義到SharedEntityManagerFactory中。 我希望能夠動態添加它們,以便不需要更改代碼,也不需要重新部署。我可以簡單地將持久性單元的詳細信息保存在主數據庫中,並在需要時將其鏈接到客戶端。但是,這比將每個數據存儲實現爲單獨的Web服務要好得多。更少的開銷。 Web服務具有能夠將URL存儲在db中並動態使用它的附加好處。我將不得不提出選擇。 – likenoother 2012-04-01 08:31:50