ビューにCDI(Weld Container)と@ConversationScopeを使用するアプリケーションを構築しています。会話の最初にJTAトランザクションを開始し、最後にコミット/ロールバックする必要があります。だから私はこれをコーディングしました:
@Named
@ConversationScoped
public class ConversationBean implements Serializable {
private @Inject UserTransaction utx;
private @Inject Conversation conversation;
public void startConversation(){
conversation.begin();
try {
utx.begin();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void stopConversation(){
conversation.end();
try {
utx.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
しかし、結果は私が会話/トランザクションを開始すると
09:23:33,795エラー[org.jboss.as.txn](http--127.0.0.1-8180-1)JBAS010152:アプリケーションエラー:トランザクションはステータス0のリクエストでまだアクティブです
そして、私がコミットを発行するとき:
09:23:56,513エラー[stderr](http--127.0.0.1-8180-1)java.lang.IllegalStateException:BaseTransaction.commit-ARJUNA016074:トランザクションがありません!
これがどのように機能するのか、何か考えはありますか?私の環境はJBossアプリケーションサーバー7.1.1(溶接コンテナ)です。ありがとうリンダ