![](/img/trans.png)
[英]Wildfly 8.0.0.Final + EntityManager + PostgreSQL - idle in transaction
[英]Wildfly 8.0.0.Final JTA transaction issues
由于我们在事务中使用了大量的@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事务的情况下,我们遇到如下错误:
使用自己的TransactionInterceptor导致
引起:java.sql.SQLException:java.sql.SQLException:XAER_RMFAIL:当全局事务处于IDLE状态时,无法执行该命令
我们曾经使用Seam3托管交易,它似乎工作正常。 但它不再适用于Wildfly。 我们尝试了Deltaspike的jpa模块,但是即使我们遵循他们的指令,它似乎也存在围绕多个数据源的事务问题(非JTA似乎很好)。
我们还尝试了@Applicationscoped @TransactionalManagement,但它没有给我们交易。
我有什么选择使用Wildfly而不是@Stateful或@Statelss @Singleton等?
您是否尝试过javax.transaction.Transactional
(Java EE 7中的新增功能)?
@ApplicationScoped
@Transactional
public MyTransactionalBean {
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.