2009-12-03 73 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。