我对使用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 ,
我的配置有问题吗?
答案 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 />