gpt4 book ai didi

java - JOTM getTransactionManager().getTransaction() 返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:59 25 4
gpt4 key购买 nike

我正在使用 spring、oracle 和 jotm(在 tomcat 中)来使用 2PC 提交。下面是 Spring 配置。

<aop:config>
<aop:pointcut id="defaultOperation"
expression="execution(* jatis.avantrade.foundation.model.engine.*.*(..))" />
<aop:advisor advice-ref="defaultTrxAdvice" pointcut-ref="defaultOperation" />
</aop:config>

<tx:advice id="defaultTrxAdvice" transaction-manager="trxManager">
<tx:attributes>
<tx:method name="check*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="is*" read-only="true" />
<tx:method name="load*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="count*" read-only="true" />
<tx:method name="search*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="*" rollback-for="Throwable" />
</tx:attributes>
</tx:advice>

<bean id="txImpl" class="org.springframework.transaction.jta.JotmFactoryBean" />




<bean id="trxManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="txImpl" />
<property name="userTransaction" ref="txImpl" />
</bean>

问题是当我使用 JOTM 对象调用 getTransactionManager().getTransaction() 时,它返回 null。

Current cur = (Current) ContextHelper.getApplicationContext()
.getBean("txImpl");
try {
log.error("cur : " cur.getTransactionManager().getTransaction());
} catch (SystemException e) {
log.error(e.getMessage(), e);
}

如何解决这个问题?

最佳答案

一种方法可能是使用 Apache TomEE这是已经集成了 TransactionManager 的 Tomcat。编写一个简单的 Spring 工厂 bean 来将 TransactionManager 和 UserTransaction 交给 Spring。

两者都可以从 JNDI 中查找:

  • java:comp/TransactionManager
  • java:comp/UserTransaction

该工厂只会替换上述配置中的工厂:

<bean id="txImpl" class="org.foo.MyTransactionFactoryBean" />

不过,Spring 很可能已经有一个工厂 bean,用于通过这些名称查找 TransactionManager。

关于java - JOTM getTransactionManager().getTransaction() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com