gpt4 book ai didi

java - 在 CMT bean 中使用编程式事务控制

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:19 27 4
gpt4 key购买 nike

我需要手动从 CMT bean 提交事务。有一个处理多个记录的循环,每个记录应在其自己的事务中处理。我想将方法​​事务支持标记为 NOT_SUPPORTED,然后从方法控制事务。但是,我无法从 SessionContext 检索 UserTransaction 实例,也无法将其作为 JNDI 资源 java:/module/UserTransaction 注入(inject)。

是否有机会在自己的事务中处理 CMT bean 中的多个记录,而无需引入新的 BMT bean 进行此类处理?

最佳答案

如果您使用 CMT,您不应该自己搞乱交易。

我建议您为需要在事务中进行的操作创建一个方法,将其标记为REQUIRES_NEW,然后从循环中调用它。

每次调用该方法时,当前事务(如果有)将被挂起,并启动一个新事务来进行操作。

类似这样的事情:

@EJB
SomeEJBLocal anotherme;

public void loop() {
for(/* something */) {
anotherme.single();
}
}

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void single() {
// do stuff
}

您必须注入(inject) EJB 的另一个实例并调用 single 以便容器处理事务方面。

关于java - 在 CMT bean 中使用编程式事务控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040008/

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