簡體   English   中英

Wildfly 8.0.0.Final JTA交易問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM