【问题标题】:How many EJBs is too many?多少个 EJB 太多了?
【发布时间】:2009-04-19 23:58:48
【问题描述】:

我目前正在开发一个基于 JavaEE 的大型软件。我们遵循 JavaEE 的一般准则,即每组相关的操作都应该进入它们自己的 EJB。我们目前有超过 275 个不同的 EJB 类(无状态会话 bean)。这个数字很可能会增长到至少两倍。

我想知道 EJB 容器是否设计用于容纳这么多不同种类的 EJB。我很想知道我们是否会因为拥有太多这样的类而导致一些糟糕的性能损失,以及一些应用服务器级别的调整是否有助于缓解这些假设性问题。

我们在 sun 的 Java 6 上使用带有 JavaEE 5 的 Glassfish v2,因此非常感谢有关这个特定平台的建议。

【问题讨论】:

    标签: jakarta-ee glassfish ejb


    【解决方案1】:

    EJB 应该是细粒度的,所以如果您的设计保持一致,那么您所做的事情就没有问题。

    EJB 只是类,所以除了一般负载之外没有什么可担心的,这与您部署的 EJB 的数量正交。

    如果您担心性能,请输入一些监控或其他性能指标,看看添加新功能时情况如何。

    归根结底,您是宁愿维护更少的类和很多方法,还是维护更多的类和更少的方法?我知道我会选择哪一个。

    【讨论】:

      【解决方案2】:

      (有没有办法让我说“任何”而不被否决?)

      严肃地说,尽可能多地使用。我的经验法则是(对于一般的 EJB 和类)如果你不能用大约三个词的类名来完全描述事物的作用,那么你就做得太多了。

      就性能而言,我怀疑如果系统开始遭受“太多 EJB”的困扰,那么您在某个地方就会遇到更大的问题。

      【讨论】:

      • 谢谢,etlerant!另一个企业 java 难民,我明白了。
      【解决方案3】:

      EJB 是组件而不是类,您应该在这个术语中考虑它们并适当地表达您的系统设计。

      组件的粒度显然取决于领域。

      假设您正在使用 EJB 对(相当老式的)计算机进行建模。电阻器、晶体管、线圈等:这些都是 pojos。芯片和电路板是组件。该程序集是 EAR。

      接口粒度应反映组件功能。

      【讨论】:

        【解决方案4】:

        EJB 不仅仅是普通的类实例。它需要在容器、实例池等方面进行额外维护。许多 EJB 需要服务器中的大量资源。

        我不认为一个系统确实需要数百个 EJB。虽然我还参与了一个包含 90 个 EJB 的应用程序,但那是一场噩梦:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-03
          • 1970-01-01
          • 2010-12-26
          • 1970-01-01
          • 2015-05-30
          • 1970-01-01
          • 2010-12-01
          • 2011-02-09
          相关资源
          最近更新 更多