如何配置JPA以使用JNDI?

jav*_*csw 7 persistence jpa jndi

我有一个工作持久性定义,适用于Java级别测试.现在我想将它合并到一个Web应用程序中,该应用程序在context.xml中将数据库连接定义为JNDI.我需要更改什么才能使它与JNDI而不是persistence.xml一起使用,或者至少从那里获取信息?

bdu*_*lac 2

对于jdbc/MYNAME JNDI 名称, persistence.xml的开头应该是这样的(使用EclipseLink作为实现) :

<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>
Run Code Online (Sandbox Code Playgroud)

当然,您应该设置适合您环境的配置。在示例中,我使用非 JTA数据源:根据您的评论之一,您的数据源似乎不符合 JTA 标准。对于Hibernate,持久化提供者应该是不同的。