gpt4 book ai didi

JavaEE - 在事务之间共享资源

转载 作者:行者123 更新时间:2023-11-29 09:10:09 25 4
gpt4 key购买 nike

我正在开发一个启动事务、注册一些资源、启动另一个事务并根据先前事务注册的资源执行处理的应用程序。例子是:

注册:

@Stateless
@LocalBean
public class Register {
@Resource TransactionSynchronizationRegistry tsr;
public void registerResource(String id, Resource r) {
tsr.putResource(id, r);
}
}

第一笔交易

@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...
}
}

第二次交易

@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 仅用于一个事务,所以问题是是否有另一种方法,例如资源注册表,我可以在不同的事务中使用它。

谢谢。

大号

最佳答案

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

关于JavaEE - 在事务之间共享资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com