我有一个无状态会话 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% 的情况下都能按预期工作。但是,0.01% 给我带来了一些严重的问题/担忧。
我知道如果我有不同的公共方法,那么我可能不会在调用之间返回相同的 bean,这将导致这种行为。但是,在这种情况下,唯一的调用是对单个公共方法。容器(在这种情况下为 Glassfish)是否仍会在私有方法调用之间交换 bean?
(编辑)我将“类级别”重命名为“实例级别”,因为这引起了一些混乱。