2011-01-27 77 views
1

启用交换数据库连接参数我们有各种类型的项目,例如后端java进程和前端tomcat应用程序,它们目前使用EclipseLink/JPA和persistence.xml来获取数据库连接信息。有没有办法允许这些参数被动态地改变,比如在后端数据库已被移动到另一台服务器的情况下。 persistence.xml封装在jar中,不能直接修改。我看到各种讨论动态持久性的主题,但没有涉及这个特定的主题。有没有什么地方可以用任何例子来具体说明这一点?如何使用EclipseLink/JPA

感谢

+0

可以重新启动网络服务器吗? – bert 2011-01-28 08:18:25

回答

2

如果你的持久化上下文是应用程序管理(即您使用Persistence.createEntityManagerFactory(persistenceUnitName)获得它),你可以通过createEntityManagerFactory(persistenceUnitName, properties)通过你的自定义属性覆盖从persistence.xml性能。

+0

这是否允许将这些新参数写入持久性单元,以使它们成为默认值? – sldahlin 2011-01-28 16:55:11

1

您应该做的是将JDBC连接信息放入应用程序服务器而不是persistence.xml文件中。

所以,像这样设置你的persistence.xml文件。

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="JPATest" transaction-type="JTA"> 
     <jta-data-source>jdbc/MyDBDS</jta-data-source> 
     <class>...</class> 
    </persistence-unit> 
</persistence> 

然后配置您的应用程序服务器以使数据库连接名为jdbc/MyDBDS。然后,您可以随时更新连接信息,而无需更改persistence.xml文件。