У меня есть сеанс без состояния bean, который содержит один открытый метод, несколько частных методов и некоторые переменные уровня экземпляра. Ниже приведен пример псевдокода.
private int instanceLevelVar
public void methodA(int x) {
this.instanceLevelVar = x;
methodB();
}
private void methodB() {
System.out.println(instanceLevelVar);
}
Что я вижу, так это то, что метод B печатает значения, которые не были переданы в MethodA. Насколько я могу сказать, он печатает значения из других экземпляров одного и того же bean. Что может вызвать это?
Я должен указать, что код работает как ожидалось в 99,9% случаев. Однако 0,01% вызывает некоторые серьезные проблемы/проблемы для меня.
Я понимаю, что если бы у меня были разные общедоступные методы, я мог бы не возвращать те же bean между вызовами, что могло бы привести к такому поведению. Однако в этом случае единственным вызовом является единственный публичный метод. Будет ли контейнер (Glassfish в этом случае) поменять beans между вызовами частных методов?
(edit) Я переименовал "уровень класса" в "уровень экземпляра", поскольку это вызывало некоторую путаницу.