我有一个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.
}
}
答案 0 :(得分:0)
抛出异常的方法必须注释如下:
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
在这个主题中还有很多要了解的内容。我强烈建议您阅读this great article。