2013-07-03 72 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