2

我已经读过bean@Stateful (SFSB) 永远不应该注入到@Statelessbean (SLSB) 中。但是实现以下目标的正确方法是什么?

@Stateless
public class FirstEJB
{
    @EJB
    private SecondEJB second;

    public void businessMethod()
    {
        second.businessMethod1();
        second.businessMethod2();
    }
}

有一些状态应该在second.businessMethod1()and之间保持second.businessMethod2(),所以SecondEJB不能是无状态的。也没有简单的方法将方法合并为一个,因为businessMethod1()可以有两个以上的业务方法,并且可以以不同的组合调用它们。businessMethod2()SecondEJB

实际上我已经尝试过SecondEJB有状态并且它似乎可以工作,但它会导致内存泄漏。没有SecondEJB标有@Remove注释的方法,但我尝试@StatefulTimeout过没有运气:创建了很多SecondEJB实例但没有删除。有人可以解释为什么会泄漏吗?

4

1 回答 1

0

只是不要使用注射。您可以在调用 buisnessMethod 时使用 bean 的 JNDI 查找,SecondEJB 实例将是在每次方法调用时实例化的方法范围变量。

于 2015-10-08T07:30:05.893 回答