呼び出しの結果をキャッシュし、それを要求された EJB インターフェイスにマップする Service Locator 実装を使用しているjavax.naming.Context#lookup
ため、最初の要求以降のすべての後続の要求 (同じ EJB に対する) は、キャッシュされたインスタンスを返します。
私の懸念は次のとおりです。
- 同じインスタンスが使用されるため、複数の EJB で複数の同時要求を処理するサーバー EJB プールは使用されません (基礎となるサーバー ロジックが何らかの方法で EJB プールを使用しない限り)。
- ステートレスおよびステートフル EJB はスレッド セーフですが、EJB クラスごとに 1 つのインスタンスのみが使用され、EJB には @PersistenceContext を介して注入された EntityManager があるため、複数のスレッドが同じ EntityManager インスタンスを使用する可能性があることを意味すると思います (永続性だけでなく) context)、これは間違いなくスレッドセーフではありません
Service Locator でキャッシングを使用しないのが最善だと思いますか、それとも EJB の動作に関する私の懸念は不当だと思いますか?