当我在persistence.xml中使用全局JNDI名称时,一切正常。
使用本地JNDI名称时出错,将resource-ref添加到web.xml并将本地名称映射到weblogic.xml中的全局名称。他成功部署,找到数据源,选择和插入,但从不提交!当我在persistence.xml中直接使用全局JNDI名称时,确实会发生提交。
我的春季背景如下:
<bean id="localContainerEntityManagerFactoryBean" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="rctUnit" />
</bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager" />
<tx:annotation-driven transaction-manager="transactionManager" />
更改后的persistence.xml:
<persistence-unit name="rctUnit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:comp/env/jdbc/rct</jta-data-source>
以下内容添加到web.xml和weblogic.xml:
<resource-ref>
<description>RCT DB</description>
<res-ref-name>jdbc/rct</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-description>
<res-ref-name>jdbc/rct</res-ref-name>
<jndi-name>db.datasource.rct</jndi-name>
</resource-description>
使用以下版本:
答案 0 :(得分:0)
我能够通过向persistence.xml添加eclipseLink属性来解决它:
<property name="eclipselink.target-server" value="weblogic" />
我不知道为什么在persistence.xml中使用全局JNDI名称时不需要此属性。然后不需要eclipse属性来使其工作。在persistence.xml中使用本地JNDI名称时,需要此属性才能进行事务提交。
答案 1 :(得分:0)
可能因为前缀java:comp /根据部署环境不同,有些可能不会使用“comp”部分