【问题标题】:HibernatePersistence javax.naming.NameNotFoundException thrown with DataSource使用 DataSource 引发的 HibernatePersistence javax.naming.NameNotFoundException
【发布时间】:2015-06-18 13:30:48
【问题描述】:

我正在使用 Hibernate 和 jta 数据源构建 Tomcat Servlet 应用程序。我的 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="metadata.model" transaction-type="JTA">
     <provider>org.hibernate.ejb.HibernatePersistence</provider>
     <jta-data-source>jdbc/BitronixJTADataSource</jta-data-source>

...
</persistence>

在我的${web-app}/WebContent/META-INF/Context.xml,我有以下内容:

<Context>
<Resource name="jdbc/BitronixJTADataSource" auth="Container"
           type="javax.sql.DataSource"
           maxActive="100" maxIdle="30" maxWait="10000"
           username="root" password="mysecretpassword"
           driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://localhost:3306/metadatadb" />
</Context>

应用程序启动后,我发出:

emf = Persistence.createEntityManagerFactory("metadata.model");
entityManager = emf.createEntityManager();

得到一个

javax.naming.NameNotFoundException: Name [jdbc/BitronixJTADataSource] is not bound in this Context. Unable to find [jdbc].

你知道为什么会这样吗?

【问题讨论】:

    标签: spring hibernate tomcat tomcat7


    【解决方案1】:

    似乎在 persistence.xml 中,jta-data-source 应该具有 java:comp/env/jdbc/BitronixJTADataSource 值,以便在 InitialContext 中找到它。

    【讨论】:

      猜你喜欢
      • 2016-11-03
      • 2012-12-07
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2015-08-20
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多