【问题标题】:Pooling concept in java or EJB?java或EJB中的池概念?
【发布时间】:2011-07-02 06:37:05
【问题描述】:

我们在无状态 EJB 中有池化概念。使用有什么好处 汇集?我的理解是,它将节省对象创建的时间。 这是正确的吗?如果是,在创建性能上是否存在显着差异 对象还是从现有池中获取?池化是否用于任何其他目的 比这个?

【问题讨论】:

    标签: java ejb object-pooling


    【解决方案1】:

    池对于共享有限资源(例如数据库连接)和重用创建和/或销毁成本高昂的对象很有用。当与 EJB 结合使用时,它可以限制整个系统的负载,这在您运行服务器时非常有用。根据类似question 中接受的答案,它还有助于线程安全。

    当各种资源和其他 EJB 被注入(使用注释)时,创建(或设置)EJB 的成本可能很高,根据我的经验,这是一种常见的情况。但是,例如 JBoss 似乎会重复这个过程,即使是池化的 EJB(请参阅 Tom Anderson 在类似的question 中的回答)。

    如果池中的公共 EJB 经常注入到其他 EJB 中,则其他 EJB 将不得不等待公共 EJB 在系统真正繁忙时变得可用。然后,池中的公共 EJB 充当共享的有限资源。缺点是当通用 EJB 不可用时(有时是由基础架构中的故障引起),您可能会在意想不到的地方出现超时异常(例如 50 秒后)。

    我有一些使用 JBoss 服务器的经验,该服务器具有用于无状态 EJB 的池机制。在该 JBoss 服务器中有一个常用的 EJB,它经常使用数据库连接。如果大量工作一次全部进入系统,负载会很高,但会受到池化机制的限制。如果池化机制限制最大负载过多,可以通过增加最大池大小来增加最大负载。

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 2018-06-20
      • 2016-09-21
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2015-05-26
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多