Я изо всех сил пытаюсь понять, как я должен иметь дело с JTA и CDI, работающими на экземпляре Jboss EAP 7. Я могу получить транзакцию вручную, введя объект UserTransaction, исходящий из контейнера, но когда я аннотирую метод с @Transactional, я получаю исключение из-за отсутствия транзакции .... Мой вопрос. Отсутствует ли какая-либо конфигурация? Я коротко читаю, что, возможно, мне нужно создать перехватчик для того, чтобы он работал, но я не нашел никакого последовательного примера ...Jboss EAP 7 CDI JTA @Transactional
0
A
ответ
0
В стандартной среде JEE, управляемой контейнером, только корпоративные компоненты (обычно @Stateless
beans используются) являются транзакционными. Когда вы введете такой компонент извне, транзакция будет открыта. С аннотацией @javax.transaction.Transactional
вы можете контролировать поведение транзакций, но это необязательно в случае по умолчанию.
Пример фасоли:
@Stateless
public MyBean {
public void withinTransaction() {
System.out.println("i'm running within a transaction");
}
@Transactional(TxType.NOT_SUPPORTED)
public void outsideTransaction() {
System.out.println("no transaction available...");
}
}
- При вызове
MyBean.withinTransaction
из сервлета (например, с помощью REST), новая транзакция создается (если уже не присутствует). - Если вы звоните
MyBean.outsideTransaction
, транзакции не будут созданы. - Если вы звоните
this.outsideTransaction()
изwithinTransaction
, вы до сих пор сделок доступны вoutsideTransaction
(потому что перехватчики только связаны с границами боба) - Если вы звоните
this.withinTransaction()
изoutsideTransaction
никаких новой транзакции не создается (потому что перехватчики только связаны с границами боба) - Если
outsideTransaction
будет частью второй бобAnotherBean
, который@Inject
sMyBean
, и вы называетеMyBean.withinTransaction
, то новая транзакция будет создана (если уже не существует). Потому что вы пересекаете границы бобов междуAnotherBean.outsideTransaction
иMyBean.withinTransaction
.
Смежные вопросы
- 1. JBoss EAP 6.2 CDI beans.xml
- 2. Ошибка транзакции JTA DATASOURCE JPA CDI
- 3. Weblogic 12.1.3 CDI Transactional
- 4. JBoss EAP 6.1 vs Tomcat 7
- 5. CDI + JPA + EJB + JTA + JSF -JBoss-Kitchen Пример с PostgreSQL?
- 6. JBOSS EAP 7 - EJB IP Caller
- 7. Как настроить JMS в JBoss EAP 7?
- 8. Развертывание JBoss EAP 6/AS 7
- 9. Log Outgoing JBoss EAP 7/Запросы RESTEasy
- 10. Log4j2 и Jboss EAP 7: Регистрация исключений
- 11. Arquillian и JBoss EAP 7 встроенный
- 12. Jboss (6.4 EAP) в WebSphere (7.x)
- 13. Контекст-корень на JBOSS EAP-7
- 14. CDI инъекции в JAX-RS на JBoss EAP 6
- 15. Приложение Springwebflow + CDI + JSF на Jboss 7
- 16. Агент OpenAM/OpenSSO для JBoss EAP 6/JBoss AS 7
- 17. JBoss 7.x или JBoss EAP 6.x
- 18. System.out.print не работает на JBoss EAP 6/JBoss AS 7
- 19. JPA/JTA/@Transactional Spring annotation
- 20. JBoss EAP 6.1 Alpha: Поддерживается ли Windows 7?
- 21. CDI @Transactional с самостоятельной Invocation
- 22. StandAlone CDI + JTA Без JNDI
- 23. JBoss и CDI Производитель
- 24. jboss-cli без установки полного jboss/EAP
- 25. Подмодули JBOSS EAP 6.2
- 26. JBOSS EAP 6.4 зависимость
- 27. JBoss EAP 5.1 - JBossGenericPrincipal
- 28. JBoss EAP 6,3 СМТ Multiple инерционности единиц
- 29. @Transactional игнорируется в базовом классе CDI Бина
- 30. JBoss EAP 6.1 Консольное вращение
Я чувствую, что данных для этого вопроса недостаточно, чтобы получить ответ лучше, чем полный учебник JEE о том, как настроить приложение с подключением к базе данных. И это выходит за рамки StackOverflow. Можете ли вы ограничить свою проблему? Например, вы спрашиваете, есть ли какой-либо конфиг, без указания того, какой у вас на самом деле. Или вставьте любой код, который мог бы сказать нам, если вы делаете то, что говорите, что делаете правильно. – Deltharis
Вы сделали что-нибудь, что бы отключить автоматические транзакции? –
Нам нужно знать, где вы разместили аннотацию @Transactional. Пожалуйста, поделитесь своим кодом. Вам не нужен перехватчик, поскольку «@Transactional» уже является перехватчиком перехватчика. – Rouliboy