我们有一个应用程序,它读取JMS并执行一些数据库事务,所有这些都作为一个XA事务的一部分。
如果我们发现消息有问题,我们想回滚数据库,
但是我们不希望回滚JMS让我们再次阅读该消息(如果先前启动回滚,我们不希望MDB再一次触发整个过程)。
最佳答案
确保我理解正确:您有一个事务性消息驱动的Bean,它对数据库执行一些操作。您仍然希望MDB成为XA事务的一部分,但是您不希望数据库操作影响MDB参与的事务的状态。
话虽如此,有两种解决方案:
@REQUIRES_NEW
批注的EJB中-除非它们已经全部在这样的事务上下文中运行。关于jms - JMS/MDB回滚,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7378709/