启用交换数据库连接参数我们有各种类型的项目,例如后端java进程和前端tomcat应用程序,它们目前使用EclipseLink/JPA和persistence.xml来获取数据库连接信息。有没有办法允许这些参数被动态地改变,比如在后端数据库已被移动到另一台服务器的情况下。 persistence.xml封装在jar中,不能直接修改。我看到各种讨论动态持久性的主题,但没有涉及这个特定的主题。有没有什么地方可以用任何例子来具体说明这一点?如何使用EclipseLink/JPA
感谢
启用交换数据库连接参数我们有各种类型的项目,例如后端java进程和前端tomcat应用程序,它们目前使用EclipseLink/JPA和persistence.xml来获取数据库连接信息。有没有办法允许这些参数被动态地改变,比如在后端数据库已被移动到另一台服务器的情况下。 persistence.xml封装在jar中,不能直接修改。我看到各种讨论动态持久性的主题,但没有涉及这个特定的主题。有没有什么地方可以用任何例子来具体说明这一点?如何使用EclipseLink/JPA
感谢
如果你的持久化上下文是应用程序管理(即您使用Persistence.createEntityManagerFactory(persistenceUnitName)
获得它),你可以通过createEntityManagerFactory(persistenceUnitName, properties)
通过你的自定义属性覆盖从persistence.xml
性能。
这是否允许将这些新参数写入持久性单元,以使它们成为默认值? – sldahlin 2011-01-28 16:55:11
您应该做的是将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文件。
可以重新启动网络服务器吗? – bert 2011-01-28 08:18:25