搜索

第 5 章 Jakarta Enterprise Beans 子系统调整

download PDF

JBoss EAP 可以缓存 Jakarta Enterprise Beans 以节省初始化时间。这通过使用 bean 池来完成。

JBoss EAP 中可以调整两个不同的 bean 池: bean 实例池和 bean 线程池。

适当的 bean 池大小取决于您的环境和应用程序。建议您使用不同的 bean 池大小进行测试,并在模拟预期的真实条件的开发环境中执行压力测试。

5.1. Bean 实例池

Bean 实例池用于无状态会话 Bean (SLSBs)和 Message Driven Beans (MDB)。默认情况下,SLSBs 使用实例池 default-slsb-instance-pool,MDB 使用实例池 default-mdb-instance-pool

bean 实例池的大小限制了一次可以创建的特定企业 bean 的实例数量。如果特定企业 bean 的池已满,客户端将阻止并等待实例变为可用。如果客户端在池 的超时 属性中设置的时间内没有获得实例,则会抛出异常。

使用 derived-size 或 max-pool -size 来配置 bean 实例池的大小。derived-size 属性允许您使用以下值之一配置池大小:

  • from-worker-pools,这表示从系统上配置的所有 worker 池的总线程大小派生出的最大池大小。
  • from-cpu-count,这表示最大池大小派生自系统上可用处理器总数。请注意,这不一定是一个 1:1 映射,可能由其他因素增强。

如果 derived-size 未定义,则 max-pool-size 的值用于 bean 实例池的大小。

注意

derived -size 属性覆盖 max-pool-size 中指定的任何值。derive-size 必须未定义,才能使 max-pool-size 值生效。

您可以将企业 bean 配置为使用特定的实例池。这允许精细控制每个企业 bean 类型可用的实例。

5.1.1. 创建 bean 实例池

本节介绍如何使用管理 CLI 创建新的 bean 实例池。您还可以通过从 Configuration 选项卡导航到 Jakarta Enterprise Beans 子系统,然后选择 Bean Pool 选项卡,来使用管理控制台配置 bean 实例池。

要创建新实例池,请使用以下命令之一:

  • 创建具有最大池大小的 bean 实例组:

    /subsystem=ejb3/strict-max-bean-instance-pool=POOL_NAME:add(derive-size=DERIVE_OPTION,timeout-unit=TIMEOUT_UNIT,timeout=TIMEOUT_VALUE)

    以下示例创建一个名为 my_derived_pool 的 bean 实例池,最大从 CPU 数派生,超时为 2 分钟:

    /subsystem=ejb3/strict-max-bean-instance-pool=my_derived_pool:add(derive-size=from-cpu-count,timeout-unit=MINUTES,timeout=2)
  • 创建具有显式最大池大小的 bean 实例池:

    /subsystem=ejb3/strict-max-bean-instance-pool=POOL_NAME:add(max-pool-size=POOL_SIZE,timeout-unit=TIMEOUT_UNIT,timeout=TIMEOUT_VALUE)

    以下示例创建一个名为 my_pool 的 bean 实例池,最大为 30 个实例,超时为 30 秒:

    /subsystem=ejb3/strict-max-bean-instance-pool=my_pool:add(max-pool-size=30,timeout-unit=SECONDS,timeout=30)

5.1.2. 指定 bean 应该使用的实例池

您可以通过利用 @org.jboss.ejb3.annotation.Pool 注释,或通过修改 bean 的 jboss-ejb3.xml 部署描述符来设置特定的 Bean 将使用它的特定实例池。

5.1.3. 禁用默认的 bean 实例池

可以禁用默认的 bean 实例池,这会导致 enterprise bean 默认不使用任何实例池。相反,当线程需要调用企业 bean 的方法时,会创建一个新的企业 bean 实例。如果您不希望对所创建的企业 bean 实例数量有任何限制,这将非常有用。

要禁用默认的 bean 实例池,请使用以下管理 CLI 命令:

/subsystem=ejb3:undefine-attribute(name=default-slsb-instance-pool)
注意
If a bean is configured to use a particular bean instance pool, disabling the default instance pool does not affect the pool that the bean uses.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.