我在谷歌和各种论坛上搜索了我的问题的答案,但无法找到解决方案。我目前正在尝试通过向文件添加持久性单元来在运行时修改persistence.xml
这个问题的解决方案总是在创建EntityManagerFactory(或EntityManager)时传递一个属性Map"但是我需要在persistence.xml中保存新的持久性单元,因为应用程序将有100个甚至更多的持久性单元,每个租户将注册一个服务,每个租户都有自己的数据库。我目前正在使用EclipseLink 2.3.3作为我的JPA实现,EJB 3.1和jboss 7.1.1.Final作为我的应用程序服务器。
是否可以在运行时(动态)修改persistence.xml?
答案 0 :(得分:2)
persistence.xml是一个已部署的工件,因此很难在运行时进行修改。我认为将属性映射传递给createEntityManagerFactory是您最好的解决方案,您对此有什么问题?
您可能还想尝试使用PersistenceProvider API,createContainerEntityManagerFactory()获取PersistenceUnitInfo。
另外,请考虑使用EclipseLink的多租户支持,
http://www.eclipse.org/eclipselink/documentation/2.5/solutions/multitenancy.htm