Spring 创建EntityManagerFactory时出现异常-查找';持久性/myPU';连载

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

我正在使用Glassfish应用服务器,并尝试将我的spring hibernate web应用程序连接到我的db,我有以下配置:

在Glassfish中,我添加了一个jdbc连接,并向DB发送了一个成功的ping

我还添加了一个JDBC资源(在glassfish中),其jndi名称为:JDBC/myResource。此资源位于我创建和测试的连接池下(在步骤1中)

我的EntityManager用@PersistenceContext注释:

@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在这个上下文中没有绑定