将@Transactional与EJB一起使用

问题描述 投票:3回答:2

可以在EJB中使用@ Transactional吗?使用@ TransactionAttribute有什么区别吗?

我已经在Difference between @Transactional and @TransactionAttribute处发现@Transactional用于POJO。我在Wildfly中意外地将它用于EJB,并且没有错误。我想知道行为是否会相同还是存在一些差异。还是@Transactional会被忽略,而使用@TransactionAttribute的默认级别?我在规格中进行搜索,但没有发现任何帮助。

编辑:

如@kostja所言,尚不清楚所指的是框架问题。我的意思是来自CDI的@Transactional,而不是Spring。

jakarta-ee ejb cdi
2个回答
5
投票

没有根据EJB 3.2规范的7.1节:

关联JTA事务拦截器是非法的(请参阅[8])使用Enterprise JavaBeans。 EJB容器应部署失败此类应用。[39]

[39]在本规范的将来版本中可能会删除此限制。

从容器实现的角度来看,CDI和EJB在不同的层上运行(CDI代理包装EJB代理)。为了使此工作顺利进行,两个容器之间需要进行更深入的集成,以使@Transactional拦截器和EJB容器都不会尝试检查/更新事务上下文。


0
投票
  • @TransactionAttribute用于EJB bean。
  • @Transactional用于CDI bean。

否,@Transactional不应用于注释EJB业务方法。尽管Java Docs建议将它[[may用于EJB,但EJB规范建议不应将其用于EJB 目前

© www.soinside.com 2019 - 2024. All rights reserved.