0

次のことを行うメッセージ駆動型Bean(EJB 2.1)があります。

public void onMessage(javax.jms.Message msg) {
try{
...
} catch (JMSException e) {
        e.printStackTrace();
       getMessageDrivenContext().setRollbackOnly();
}

そのようなBeanをEJB3.1に変換したいのですが、setRollbackOnly()の明示的な呼び出し(したがって、Bean内へのMessageDrivenContextリソースの注入)がまだ必要かどうか疑問に思います。つまり、JMSExceptionがスローされたときに、コンテナーはトランザクションを自動的にロールバックしませんか?このようなメソッド呼び出しを省略するとどうなりますか?

ありがとう!

4

1 に答える 1

1

それはまだ必要です。JMSExceptionは特別な場合ではありません。トランザクションのロールバックは発生しません。省略setRollbackOnlyし、コードの他の部分がロールバックを引き起こさない場合、トランザクションは最終的にコミットされます。

于 2012-11-09T20:06:01.967 に答える