我需要在update()上执行两件事:
因为对象很大,所以通过JMS发送必须在数据库事务之外。问题是Seam基于JSF阶段添加了事务,因此,只要调用我自己的重写update(),数据库事务就已经处于活动状态。
向afterUpdate()这样的更新添加一个回调很好,但这似乎是不可能的。
问:我如何提交实体,然后在事务之外执行代码?
谢谢你的帮助!
发布于 2014-02-13 15:35:56
我发现所使用的事务是Spring事务。它允许这样的事情:
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCompletion(int status) {
switch (status) {
case STATUS_COMMITTED:
LOGGER.debug("update::afterCompletion");
afterCompletionCallback();
break;
case STATUS_ROLLED_BACK:
break;
case STATUS_UNKNOWN:
default:
break;
}
}
});事务仍然可用,但是数据库不再被锁定,任何超时都不会影响Seam事务。
https://stackoverflow.com/questions/21748940
复制相似问题