gpt4 book ai didi

java - Wildfly 8.0.0.Final JTA 交易问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:34 27 4
gpt4 key购买 nike

由于我们在事务中使用了很多@ApplicationScoped bean,但我们不想使用 EJB(ApplicationScoped bean 不能与无状态 bean 一起使用),所以我们创建了自己的事务拦截器,例如:

@Resource
UserTransaction tx;
@Resource(mappedName="java:jboss/TransactionSynchronizationRegistry")
TransactionSynchronizationRegistry tsr;

@AroundInvoke
public Object manageTransaction(InvocationContext context) throws Exception {
Object result;
if (Status.STATUS_NO_TRANSACTION == tsr.getTransactionStatus()) {
tx.begin();
// System.out.println("Starting transaction");
result = context.proceed();
tx.commit();
} else {
result = context.proceed();
}
// System.out.println("Committing transaction");

return result;
}

但是,在 JTA 事务的情况下,我们得到如下错误:

Using own TransactionInterceptor caused
Caused by: java.sql.SQLException: java.sql.SQLException: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state

我们曾经使用 Seam3 托管事务,它似乎工作正常。但它不再适用于 Wildfly。我们尝试了 Deltaspike 的 jpa 模块,但它似乎在处理多个数据源(非 JTA 似乎没问题)时出现问题,即使我们遵循了他们的说明。

我们也试过 @Applicationscoped @TransactionalManagement 但它没有给我们交易。

在使用 Wildfly 而不是 @Stateful 或 @Statelss @Singleton 等时,我有哪些选择?

最佳答案

您是否尝试过 javax.transaction.Transactional(Java EE 7 中的新功能)?

@ApplicationScoped
@Transactional
public MyTransactionalBean {
// ...
}

关于java - Wildfly 8.0.0.Final JTA 交易问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163826/

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