具有实例变量的无状态会话 Bean
我有一个无状态会话Bean,其中包含一个公共方法,几个私有方法和一些实例级变量。下面是一个伪代码示例。
private int instanceLevelVar
public void methodA(int x) {
this.instanceLevelVar = x;
methodB();
}
private void methodB() {
System.out.println(instanceLevelVar);
}
我看到的是,methodB 正在打印未传递到 MethodA 中的值。尽我所能分辨出它正在打印来自同一豆的其他实例的值。这是什么原因造成的?
我应该指出,代码在99.9%的时间内按预期工作。但是,.01%给我带来了一些严重的问题/担忧。
我知道,如果我有不同的公共方法,那么我可能不会在调用之间得到相同的bean,这将导致这种行为。但是,在这种情况下,唯一的调用是对单个公共方法的调用。容器(在本例中为 Glassfish)是否仍会在私有方法调用之间交换 Bean?
(编辑)我将“类级别”重命名为“实例级别”,因为这会引起一些混淆。