我使用現有的Seam 2.2.0 + JPA(Hibernate 3.3.1)應用程序,該應用程序需要轉換爲每個數據庫模式相同的「每個客戶端的單個數據庫」環境。該應用程序在Glassfish上運行,使用IceFaces,並有幾個利用對話的頁面。它還使用單個EJB進行身份驗證。不幸的是,將客戶分成自己的數據庫的決定超出了我的控制範圍。多租戶Seam + JPA應用程序
由於概念證明,我已經通過使用Spring JPA抽象,本地資源交易活動的EntityManagerFactory(IES)和數據源(S)的管理到應用程序中作出的應用感知多個數據庫,並且ThreadLocal的上下文信息。例如,每次用戶登錄時,如果一個新的EntityManagerFactory尚未初始化,則使用與其數據庫通信的新DataSource進行初始化。這在有少量數據庫的測試環境中運行良好。
我的問題是,這種方法可以擴展到數百個數據庫嗎?我希望將應用程序服務器添加到負載均衡器來處理額外的負載,但是與典型情況相比,Hibernate/JPA第一級緩存和/或Seam上下文管理(也就是內存消耗)的開銷會需要更多的服務器來擴展負載均衡的應用如果是這樣,可以通過分配具有大量RAM和/或大型分佈式緩存的服務器來緩解這種情況嗎?
任何有識之士將不勝感激。
嗨亞歷克斯,你能給我一個例子初始化一個新的EntityManagerFactory使用新的數據源?謝謝。 – 2011-05-24 04:21:49