2009-12-03 60 views
6

我有一個適用於java級別測試的工作持久性定義。現在我想將它合併到一個web應用程序中,該應用程序將context.xml中的數據庫連接定義爲JNDI。我需要更改哪些內容才能使用JNDI而不是persistence.xml,或者至少從中獲取信息?如何配置JPA以使用JNDI?

+0

你設法做到了嗎? – test30 2013-12-02 13:53:19

+1

是的,但我的答案與細節被刪除沒有很好的理由。歸結爲使用JTA數據源。請參閱http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/configuration.html。 – javydreamercsw 2013-12-02 21:07:27

回答

1

的persistence.xml開始應該是這樣的(使用的EclipseLink爲實施),對於JDBC/MYNAME JNDI名稱:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 
    <persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">  
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <non-jta-data-source>java:comp/env/jdbc/MYNAME</non-jta-data-source> 
    <class>org.test.entity.MyEntity</class> 
... 
    </persistence-unit> 
<persistence> 

當然,你應該設置適當的配置爲你的環境。在這個例子中,我使用非JTA 數據源:根據您的意見之一,看起來您的數據源不符合JTA。對於休眠,持久性提供者應該是不同的。

0

當您使用JPA時,您必須使用persistence.xml。因爲JPA必須檢查persistence.xml。所以你可以同時使用persistence.xml和jndi。