1つのパブリックメソッド、いくつかのプライベートメソッド、およびいくつかのインスタンスレベル変数を含むステートレスセッション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が返されない可能性があり、その結果、この動作が発生する可能性があることを理解しています。ただし、この場合、唯一の呼び出しは単一のパブリックメソッドへの呼び出しです。コンテナ(この場合はGlassfish)は、プライベートメソッド呼び出し間でBeanを交換しますか?
(編集)混乱を引き起こしていたため、「クラスレベル」の名前を「インスタンスレベル」に変更しました。