2
我们有一个简单的无状态EJB计时器,它可以获得注入Spring服务的实例。春季服务有一个标记为交易的方法。当EJB使用事务管理类型CONTAINER时,spring服务调用会导致IllegalStateException:Operation不允许。因此,我们将EJB事务管理类型设置为BEAN,并且一切都按照广告方式工作。这是正常的吗?我的印象是春季交易管理会加入CMT。Spring + EJB 3.1 CMT与BMT交易
例如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();
}
}
例如春季服务
@Service
public class HelloService implements IHelloService {
@Transactional
public void hello(){
}
}
你使用哪个spring transaction manager?一般来说,我会在Spring或EJB中执行事务,而不是在两个地方执行事务。 – 2013-12-29 11:44:57
这是一年半前回答的... – joekarl 2013-12-30 00:45:57