春季jndi和jta与weblogic

时间:2014-03-22 21:34:39

标签: spring weblogic jndi entitymanager jta

我对使用weblogic配置spring的JTA JNDI的方式感到困惑:

据我了解,<jee:jndi-lookup id="entityManagerFactory" jndi-name="jdbc/oracledb" />

用于将数据源与 EntityManagerFactory 中的名称(已在weblogic服务器中创建)绑定。 然后允许spring检测JPA注释并在DAO中注入适当的值我们定义bean

<bean       
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

和jndi:

    <jee:jndi-lookup id="entityManagerFactory" jndi-name="jdbc/oracledb" />

激活spring的jta:

    <tx:jta-transaction-manager />

我的persistence.xml文件是:

   <persistence-unit name="ebankingUnit"
    transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/oracledb</jta-data-source>
    <class>com.datamodel.Product</class>

我得到的错误是实体管理器在DAO中 NULL

我的配置有问题吗?

1 个答案:

答案 0 :(得分:1)

查找<jee:jndi-lookup id="entityManagerFactory" jndi-name="jdbc/oracledb" />几乎可以肯定是DataSource,而不是entityManagerFactory。您的配置可能需要

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/oracledb" />

<bean
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        id="entityManagerFactory">
        <property name="dataSource" ref="dataSource" />
         <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
    </bean>

<tx:jta-transaction-manager />