具有实例变量的无状态会话Bean

普雷斯顿:

我有一个无状态会话bean,其中包含一个公共方法,几个私有方法和一些实例级变量。下面是一个伪代码示例。

private int instanceLevelVar

public void methodA(int x) { 
  this.instanceLevelVar = x;
  methodB();
}

private void methodB() {
  System.out.println(instanceLevelVar);
}

我看到的是methodB正在打印未传递给MethodA的值。最好的说来,它是从同一bean的其他实例打印值。是什么原因造成的?

我应该指出代码在99.9%的时间内都能正常工作。但是,.01%对我造成了一些严重的问题/担忧。

我知道,如果我使用不同的公共方法,则两次调用之间可能无法获得相同的bean,这将导致这种行为。但是,在这种情况下,唯一的调用是对单个public方法的调用。容器(在这种情况下为Glasfish)是否仍将在私有方法调用之间交换Bean?

(编辑)我将“类级别”重命名为“实例级别”,因为这引起了一些混乱。

火箭外科医生:

我只是根本不会在无状态会话bean中使用实例变量。无论您遇到问题的原因是什么,无论如何您可能都不希望这样做。只需尝试使用局部变量或在您从无状态会话bean业务方法调用的帮助器类中定义实例变量即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章