Я экспериментирую с Java EE 7, CDI, JPA и JSF.
Когда веб-приложение запускается, я хотел бы запустить метод инициализации в моем компоненте CDI (помечен @PostConstruct), который выполняет некоторую работу с базой данных (вставляет несколько строк и т. Д.). Для этого мне нужна транзакция, но это оказалось не так просто, как я ожидал.
Я пробовал добавить в свой метод аннотацию @Transactional, но, видимо, она работает только с EJB. Я действительно пробовал преобразовать свой bean-компонент в EJB вместо bean-компонента CDI, но все еще не получил транзакцию для моего метода @PostConstruct. Он работал с другими методами в bean-компоненте, но не с моим методом инициализации @PostConstruct.
Затем я прочитал о создании перехватчика метода для передачи транзакций в компоненты CDI:
http://eubauer.de/kingsware/2012/01/16/cdi-and-transactions-eg-in-jboss-7-0-2/
Я тоже пробовал, но не повезло. Это тоже не работает.
Итак, как получить транзакции в метод инициализации @PostConstruct в компоненте CDI?
@Transactional
добавила поддержку CDI, перенеся транзакции в свою спецификацию. - person John Ament   schedule 10.11.2013@PostConstruct
методом инициализатора. Казалось бы, естественное место для выполнения некоторой работы по инициализации базы данных, требующей транзакции. Может, есть другой способ сделать это? - person StrangeLoop   schedule 10.11.2013