2011-01-27 73 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文件。