如何配置JPA以使用JNDI?

时间:2009-12-03 23:03:42

标签: jpa persistence jndi

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

2 个答案:

答案 0 :(得分:2)

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

<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 DataSource :根据您的一条评论,您的 DataSource 似乎不符合JTA。对于 Hibernate ,持久性提供程序应该是不同的。

答案 1 :(得分:0)

在使用JPA时必须使用persistence.xml。因为JPA必须检查persistence.xml。所以你可以同时使用persistence.xml和jndi。