我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
个实例但未删除。有人可以解释它泄漏的原因吗?
答案 0 :(得分:0)
只是不要使用注射。您可以在调用buisnessMethod时使用Bean的JNDI查找,并且SecondEJB实例将是在每个方法调用上实例化的方法范围变量。