Spring 创建EntityManagerFactory时出现异常-查找';持久性/myPU';连载
我正在使用Glassfish应用服务器,并尝试将我的spring hibernate web应用程序连接到我的db,我有以下配置: 在Glassfish中,我添加了一个jdbc连接,并向DB发送了一个成功的ping 我还添加了一个JDBC资源(在glassfish中),其jndi名称为:JDBC/myResource。此资源位于我创建和测试的连接池下(在步骤1中) 我的EntityManager用@PersistenceContext注释:Spring 创建EntityManagerFactory时出现异常-查找';持久性/myPU';连载,spring,hibernate,jdbc,glassfish-3,Spring,Hibernate,Jdbc,Glassfish 3,我正在使用Glassfish应用服务器,并尝试将我的spring hibernate web应用程序连接到我的db,我有以下配置: 在Glassfish中,我添加了一个jdbc连接,并向DB发送了一个成功的ping 我还添加了一个JDBC资源(在glassfish中),其jndi名称为:JDBC/myResource。此资源位于我创建和测试的连接池下(在步骤1中) 我的EntityManager用@PersistenceContext注释: @PersistenceContext(unitNam
@PersistenceContext(unitName = "myPU")
protected EntityManager entityManager;
在\src\main\resources\META-INF\I下,我创建了persistence.xml文件:
<persistence-unit name="myPU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/myResource</jta-data-source>
<properties>
<!-- Glassfish transaction manager lookup -->
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.SunONETransactionManagerLookup" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"></property>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.default_schema" value="PUBLIC" />
<property name="hibernate.format_sql" value="true" />
<!-- Validates the existing schema with the current entities configuration -->
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
org.hibernate.ejb.HibernatePersistence
jdbc/myResource
以下是我的applicationContext的外观:
bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
</bean>
<tx:annotation-driven transaction-manager="txManager" />
<jee:jndi-lookup id="emf" jndi-name="persistence/myPU" />
<!-- In order to enable EntityManager injection -->
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
<property name="persistenceUnits">
<map>
<entry key="myPU" value="persistence/myPU" />
</map>
</property>
</bean>
bean id=“txManager”
class=“org.springframework.orm.hibernate4.HibernateTransactionManager”>
在my web.xml中,我有:
<persistence-unit-ref>
<persistence-unit-ref-name>persistence/myPU</persistence-unit-ref-name>
<persistence-unit-name>myPU</persistence-unit-name>
持久性/myPU
迈普
当我发表文章时,我不断得到:
没有定义名为“myPU”的bean。有关详细信息,请参阅server.log
为什么要将持久性单元作为bean来查找?知道我做错了什么吗
提前感谢已解决-我在persistence.xml中添加了transaction type=“JTA”。 出于某种原因,我的印象是,如果在persistence.xml中指定一个jta数据源,那么默认事务类型应该是“jta”,也许不是。我并不真正理解我的异常与此解决方案之间的关系,但目前我的persistence.xml有以下行:
<persistence-unit name="myPU" transaction-type="JTA">
它就像一个符咒。嗨,你把persistence.xml放在哪里了?在其中一个jar文件中?此外,当使用这种方式时,不同的webapp会得到相同的EMF实例吗?您将persistence.xml放在哪里?我在/shared/lib中放了一个jar,但它不起作用,它总是抱怨:javax.naming.NameNotFoundException:Name booking在这个上下文中没有绑定