2013-07-03 126 views
0


我在谷歌和各種論壇上搜索了我的問題的答案,但找不到解決方案。我目前正試圖通過在文件中添加一個持久性單元來修改persistence.xml。
此問題的解決方案始終「在創建EntityManagerFactory(或EntityManager)時傳遞屬性的Map」,但我需要將新的持久單元保存在persistence.xml中,因爲應用程序將具有100個或更多持久性單元,每個租戶將註冊一個服務,每個租戶都有自己的數據庫。我目前使用EclipseLink 2.3.3作爲我的JPA實現,EJB 3.1和jboss 7.1.1.Final作爲我的應用程序服務器。
是否有可能在運行時(即時)修改persistence.xml?在運行時修改persistence.xml

回答

2

persistence.xml是一個已部署的工件,所以在運行時很難修改。我認爲傳遞一個屬性映射到createEntityManagerFactory是你最好的解決方案,你有什麼問題呢?

您可能還想嘗試使用持久性提供程序API,使用PersistenceUnitInfo的createContainerEntityManagerFactory()。

而且,考慮使用的EclipseLink的多租戶支持,

http://www.eclipse.org/eclipselink/documentation/2.5/solutions/multitenancy.htm

+0

感謝您的回答,我使用的createContainerEntityManagerFactory()創建託管的EntityManager的容器,我的問題是,我不t在部署時有租戶或爲租戶創建的數據庫的數量(我正在實施數據庫策略),因此我需要在運行時創建持久性單元,並將其保存以防萬一發生在服務器上並需要重新啓動。 – Giuliano