首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaEE -在事务之间共享资源

JavaEE -在事务之间共享资源
EN

Stack Overflow用户
提问于 2012-10-17 16:07:38
回答 1查看 361关注 0票数 2

我正在开发一个应用程序,它启动一个事务,注册一些资源,启动另一个事务,并根据前一个事务注册的资源执行处理。示例如下:

寄存器:

代码语言:javascript
复制
@Stateless
@LocalBean
public class Register {
    @Resource TransactionSynchronizationRegistry tsr;
    public void registerResource(String id, Resource r) {
        tsr.putResource(id, r);
    }
}

第一笔交易

代码语言:javascript
复制
@Stateless
@LocalBean
public class FirstTransaction {
    @Inject Register r;
    @Inject SecondTransaction st;

    public void doRegistering(Resource r) {
        r.registerResource("key", r);
        st.doProcess();
        // do other operations...
    }
}

第二笔交易

代码语言:javascript
复制
@Stateless
@LocalBean
public class SecondTransaction {
    @Resource TransactionSynchronizationRegistry tsr;

    /*
     * start new transaction in order to ensure that
     * there won't be any rollback on any operations
     * performed by this method if its caller fails
     */
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public void doProcess() {
        Resource r = (Resource) tsr.getResource("key");
        // start processing resource...
    }
}

但是,由于在注册资源后创建了新的事务,因此我无法再次访问相同的TransactionSynchronizationRegistry。我知道TransactionSynchronizationRegistry只用于一个事务,所以问题是是否有另一种方法,例如资源注册,我可以在不同的事务中使用。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-10-17 17:22:21

这是一个相当大的开销,但您可以让它们从JMS消息队列中产生/使用有效负载。

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

https://stackoverflow.com/questions/12929811

复制
相关文章

相似问题

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