我写了一个无状态会话bean。 然后还包括将余额与实例变量相加的业务方法。 因为它是无状态的bean,所以它不应该保持以前的平衡。
但它正在维护它。
即,
首先我添加100作为余额, 我再次添加100作为余额。
根据理论,它应该给出100作为结果,因为它不维持状态。 但它给了200。
为什么?
我正在使用带有Glassfish Server 3.0的Netbeans IDE
例如:
@Stateless
public class CalculatorBean implements CalculatorBeanRemote {
double bal = 0.0;
@Override
public double Deposit(double parameter)
{
bal += parameter;
return bal;
}
}
在Servlet中,我补充说,
@EJB
private CalculatorBeanRemote calculatorBean;
并且在服务方法中,
out.println ("<br/><br/><br/>Deposit : " + calculatorBean.Deposit(100.0));
答案 0 :(得分:4)
您希望得到一个不同的EJB实例,但情况并非总是如此。
EJB通常是池化的,这意味着当你完成使用EJB时,它会返回池中,而另一个调用可能会获得相同的对象。
容器不会清理您的成员,因此您获得200而不是100。
您可以使用PostContrsuct和PreDestroy来设置和清理您正在获取的EJB。
一般情况下,你不应该在无状态bean中使用任何成员(正是因为你所看到的)