は、Bean の作成時にインスタンスprivate String config = ...
ごとに 1 回だけ初期化されます (通常はアプリケーションの起動時ですが、増加するトラフィックを処理するためにさらに Bean が必要であるとアプリケーション サーバーが判断した場合にも可能です)。
基本的に、パブリック Bean のメソッドを実行すると、その Bean インスタンスの唯一の実行者であることが保証されます。その間、プライベート変数に何でも格納できます。ただし、Bean を呼び出したコードに戻ると、後続の呼び出しが同じインスタンスに送信されるという保証はありません。
例:
@Stateless
public class MyBean implements MyBeanIntf {
private Object state;
@Override
public void beanMethod() {
state = new Object();
privateMethod();
}
private void privateMethod() {
// it's safe to access 'state' here, will be the one set in
// beanMethod()
}
@Override
public void otherMethod() {
}
}
@Stateless
public void MyBeanClient {
@EJB
private MyBean myBean;
someMethod() {
myBean.beanMethod();
// Not necessarily the same instance that executed beanMethod
// will execute otherMethod
myBean.otherMethod();
}
}
それが理論です。実際には、ステートレス EJB で内部の一時的な状態を維持することに依存するコードは避けます。このスタイルは、一般的に SLSB の状態を保持しても問題ないことを他のプログラマーに示しており、コードが混乱し、潜在的なエラーが発生する可能性があるためです (特に、以前の実行の状態が誤って現在の状態として取得された場合)。