处理EJB中的异常

时间:2017-06-07 20:08:27

标签: java exception transactions ejb ejb-3.0

我有一个EJB执行一些数据库操作,然后在执行更多数据库操作的JNDI查找之后调用另一个EJB。第二个EJB调用可以抛出一些异常,即PersistenceException(我在代码中查看了此异常将事务标记为rollbackonly)。有什么办法可以避免回滚交易吗?以下是总结问题的代码。预先感谢。

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.
    }
}

1 个答案:

答案 0 :(得分:0)

抛出异常的方法必须注释如下:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

在这个主题中还有很多要了解的内容。我强烈建议您阅读this great article