gpt4 book ai didi

java - Spring + EJB 3.1 CMT 与 BMT 事务

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

我们有一个简单的无状态 EJB 计时器,它可以将 spring 服务的实例注入(inject)其中。 spring 服务有一个标记为事务性的方法。当 EJB 使用事务管理类型 CONTAINER 时,spring 服务调用会导致 IllegalStateException:不允许操作。所以我们将 EJB 事务管理类型设置为 BEAN,一切都像宣传的那样工作。这是正常的吗?我的印象是 spring 事务管理将加入 CMT。

示例 EJB

@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@Interceptors(SpringBeanAutowiringInterceptor.class
public class TimerService {
@Autowired
IHelloService helloService;

@Schedule(second="*/1", minute="*",hour="*", persistent=false)
public void doWork(){
helloService.hello();
}
}

示例 Spring 服务

@Service
public class HelloService implements IHelloService {
@Transactional
public void hello(){

}
}

最佳答案

如果您将 Spring 事务的传播级别定义为 SUPPORTS(默认为 REQUIRED),则可能可以解决该问题。我不记得 EJB 中默认设置的确切值,但似乎 EJB 方法没有启动事务(传播是默认的),但“你好”试图这样做,这导致了冲突。

关于java - Spring + EJB 3.1 CMT 与 BMT 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6338598/

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