首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在update事务外执行代码

在update事务外执行代码
EN

Stack Overflow用户
提问于 2014-02-13 08:37:56
回答 1查看 119关注 0票数 0

我需要在update()上执行两件事:

  • 将实体提交到数据库
  • 通过JMS发送实体

因为对象很大,所以通过JMS发送必须在数据库事务之外。问题是Seam基于JSF阶段添加了事务,因此,只要调用我自己的重写update(),数据库事务就已经处于活动状态。

向afterUpdate()这样的更新添加一个回调很好,但这似乎是不可能的。

问:我如何提交实体,然后在事务之外执行代码?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-02-13 15:35:56

我发现所使用的事务是Spring事务。它允许这样的事情:

代码语言:javascript
运行
复制
        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事务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21748940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档