2017-06-07 5 views
0

DB操作を実行するEJBを持っていて、さらにDB操作を実行するJNDI参照後に別のEJBを呼び出します。この2番目のEJBコールでは、いくつかの例外、つまりPersistenceExceptionが発生する可能性があります(コードでは、この例外がトランザクションをロールバックとしてマークしています)。トランザクションのロールバックを回避できる方法はありますか?以下は、問題を要約したコードです。少し早いですがお礼を。EJBのハンドル例外

public class Test { 

    ejbMthod1() { 
     // This method run under transaction 
     // Do some DB operation like update\delete 
     if(somecondition) { 
      try { 
       // JNDI lookup for ejb2 
       ejbMethod2(); 
      } 
      catch(Exception ex){ 
       // Will catching the exception here save the Transaction from rollback ? 
       // Is there any way I can avoid this rollback just by handling proper exceptions ? 
      } 
     } 
    } 
} 

class Test2 { 
    ejbMethod2() { 
     // Run under same transaction as caller 
     // do some DB operation which can throw many exception i.e. PersistenceException. 
    } 
} 
+0

ヒント:問題が解決した場合は、それを受け入れることを検討してください。 – Mordechai

答えて

0

例外をスローするメソッドは次のように注釈を付けなければなりません。

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 

この主題に知ってはるかがあります。 this great articleを読むことを強くお勧めします。

関連する問題