У нас есть простой таймер EJB без сохранения состояния, который получает экземпляр службы Spring, внедренный в него. У службы Spring есть метод, помеченный как транзакционный. Когда EJB использует тип управления транзакциями CONTAINER, вызов службы Spring приводит к IllegalStateException: операция не разрешена. Поэтому мы установили тип управления транзакциями EJB как BEAN, и все работает так, как объявлено. Это нормально? У меня сложилось впечатление, что весеннее управление транзакциями присоединится к 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();
}
}
пример работы пружины
@Service
public class HelloService implements IHelloService {
@Transactional
public void hello(){
}
}