小编Mar*_*cin的帖子

@EJB注入与查找 - 性能问题

在使用@EJB注释时,我有一个与可能的性能问题相关的问题.想象一下以下场景

public class MyBean1 implements MyBean1Remote{
 @EJB
 private MyBean2Remote myBean2;
 @EJB
 private MyBean2Remote myBean3;
 ...
 @EJB
 private MyBean20Remote myBean20;
}  
Run Code Online (Sandbox Code Playgroud)

有一个bean与其他bean有许多依赖关系.根据EJB规范,如果我想将MyBean1Remote注入其他bean,容器必须从其池中获取所有必需的依赖项,将其注入MyBean1Remote,然后注入对MyBean1Remote存根的引用.

所以在下面的场景中容器需要保留20个ejbs(myBean1及其19个依赖项)

public class MyAnotherBean implement MyAnotherRemote{
  @EJB
  private MyBean1Remote myBean1
}
Run Code Online (Sandbox Code Playgroud)

假设在大多数情况下,我们将仅使用myBean1的每个业务方法的单个依赖项.因此,每次我们想要注入该bean时,我们都会强制容器保留许多不需要的EJB.让我们假设我们正在对远程bean进行操作,因此容器在注入依赖bean之前可能还需要执行一些负载平衡算法.

问题:

  1. 在群集环境中运行时,这是否会导致不必要的资源预留和更多性能问题?

  2. 也许好的旧ServiceLocator可能是更好的解决方案,因为有了这种方法,我们会在需要时询问特定的EJB吗?

lookup performance code-injection service-locator ejb-3.0

5
推荐指数
2
解决办法
4485
查看次数