@EJB アノテーションの使用中に発生する可能性のあるパフォーマンスの問題に関連する質問があります。次のシナリオを想像してください
public class MyBean1 implements MyBean1Remote{
@EJB
private MyBean2Remote myBean2;
@EJB
private MyBean2Remote myBean3;
...
@EJB
private MyBean20Remote myBean20;
}
他の Bean に多くの依存関係を持つ Bean があります。EJB 仕様によると、MyBean1Remote を他の Bean に注入したい場合、コンテナーはプールから必要なすべての依存関係を取得し、それを MyBean1Remote に注入してから、MyBean1Remote スタブへの参照を注入する必要があります。
したがって、次のシナリオでは、コンテナーは 20 個の ejbs (myBean1 とその 19 個の依存関係) を予約する必要があります。
public class MyAnotherBean implement MyAnotherRemote{
@EJB
private MyBean1Remote myBean1
}
ほとんどの場合、myBean1 の各ビジネス メソッドごとに 1 つの依存関係のみを使用するとします。その結果、その Bean を注入するたびに、コンテナーに多くの不要な EJB を強制的に予約させます。また、リモート Bean で操作していると仮定すると、依存する Bean を注入する前に、おそらくコンテナーも負荷分散アルゴリズムを実行する必要があります。
質問:
クラスタ環境で運用している場合、不要なリソース予約などの過剰なパフォーマンスの問題が発生することはありませんか?
このアプローチでは、本当に必要なときに特定の EJB を要求するため、古き良き ServiceLocator の方が優れたソリューションになる可能性があります。