Injeção @EJB vs pesquisa - problema de desempenho

Tenho uma pergunta relacionada a um possível problema de desempenho ao usar a anotação @EJB. Imagine o seguinte cenário

public class MyBean1 implements MyBean1Remote{
 @EJB
 private MyBean2Remote myBean2;
 @EJB
 private MyBean2Remote myBean3;
 ...
 @EJB
 private MyBean20Remote myBean20;
}  

Há um bean com muitas dependências para outros beans. De acordo com a especificação do EJB, se eu gostaria de injetar MyBean1Remote em algum outro bean, o contêiner precisaria levar todas as dependências necessárias do pool para injetar no MyBean1Remote e, em seguida, injetar referência ao stub MyBean1Remote.

portanto, no cenário a seguir, o contêiner precisa reservar 20 ejbs (myBean1 e suas 19 dependências)

public class MyAnotherBean implement MyAnotherRemote{
  @EJB
  private MyBean1Remote myBean1
}

Digamos que na maioria dos casos, usaremos apenas uma dependência por cada método comercial do myBean1. Como resultado, toda vez que queremos injetar esse bean, forçamos o contêiner a reservar muitos EJBs desnecessários. Vamos supor também que estamos operando em beans remotos, portanto provavelmente o contêiner também precisaria executar algum algoritmo de balanceamento de carga antes de injetar beans dependentes.

Questões:

Isso não causaria reserva de recursos desnecessária e mais problemas de desempenho ao operar no ambiente de cluster?

Talvez o bom e velho ServiceLocator possa ser uma solução melhor, porque com essa abordagem solicitamos EJB específico quando realmente precisamos?

questionAnswers(2)

yourAnswerToTheQuestion