EJBのスレッドセーフについて

以下、いろいろ見て回って調べたこと。
間違っている可能性あり。


まず、ステートレスセッションBean。
1回のリクエストごとにプールされているインスタンスを割り当てられる。
そのため、インスタンス変数を利用する場合は、割り当てのたびに初期化するなどしないといけない。
普通はインスタンス変数を使わずに、ローカル変数のみを使うべき。
ローカル変数はスレッドごとに別々の領域を割り当てられる(はず)なので、スレッドセーフを考える必要はありません。


次に、ステートフルセッションBean。
クライアント毎に生成されるため、1クライアントが別スレッドなどでアクセスしない限り、スレッドセーフ。
インスタンス変数なども利用可能。
ただし、多数のアクセスがあった場合に大量のメモリが必要になるので、あまり使われない(らしい)。


次は、メッセージ駆動Bean。
ステートレスセッションBeanと同様。
非同期に処理が行えるだけの違い?


エンティティBeanはローカルでインスタンス化するはずなので、関係ないかな?