将有状态的bean注入无状态

时间:2015-10-08 07:07:36

标签: java java-ee ejb stateful-session-bean

read @Stateful bean(SFSB)永远不应该注入@Stateless bean(SLSB)。但是,实现以下目标的正确方法是什么?

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

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

有些州应该在second.businessMethod1()second.businessMethod2()之间保留,因此SecondEJB不能无国籍。将businessMethod1()businessMethod2()方法合并为单一方法也没有简单的方法,因为SecondEJB可以有两种以上的业务方法,并且可以在不同的组合中调用它们。

实际上我试图使SecondEJB有状态并且似乎有效,但它会导致内存泄漏。没有标有SecondEJB注释的@Remove方法,但我尝试了@StatefulTimeout没有运气:创建了很多SecondEJB个实例但未删除。有人可以解释它泄漏的原因吗?

1 个答案:

答案 0 :(得分:0)

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