链式调用上的EJB CDI拦截器

时间:2014-12-26 10:39:40

标签: java-ee ejb cdi interceptor

我有Java EE软件,它有许多由特定功能分开的EJB。我想重用最多的代码。

在这种情况下,我遇到了数据库事务的问题。请记住:我有一个EJB,它必须在数据库中添加产品和税务信息。此过程涉及两个实体,此操作需要对数据库是原子的。

对于这种行为,我使用我创建的名为addProducsAndTaxes的注释对方法@myAmonicTransaction进行了注释。

现在我有几个EJB调用上面的EJB函数,需要将这个原子事务与数据库连接起来。它使用相同的注释AmonicTransaction,但现在一个拦截器被调用两次;一次用于最外部的EJB,再一次用于内部EJB。

我想知道是否有办法知道最内部的拦截器是否在外部EJB的上下文中,以避免这种双重拦截。

1 个答案:

答案 0 :(得分:1)

在我看来,您已经重复了EJB的事务行为。您是否有理由不能使用JTA 1.2的事务拦截器并仅在方法addProducsAndTaxes

内启动新事务