У меня есть сервлет java ee 7 с аннотацией webservlet. Я пометил один из методов сервлета как @Transactional. Диспетчер сущностей также предоставляется сервлету с контекстом постоянства.
Метод просто использует введенный диспетчер сущностей и сохраняет сущность, которая передается в качестве аргумента.
Этот метод вызывается из сервлета при обработке HTTP-запроса. Glassfish4 выдает исключение о том, что транзакция недоступна.
Я определил простой управляемый CDI-компонент с помощью метода и добавил к нему аннотацию @Transactional и диспетчер сущностей.
Я внедрил этот объект в сервлет и вызвал метод из сервлета, и все работает нормально. em вводится в компонент CDI, транзакция инициируется, и em.persist работает нормально.
Означает ли это, что объект сервлета не может иметь аннотацию @Transactional в своих методах?