2.7. ejb3 子系统
ejb3 子系统中默认的全局有状态会话 Ban 超时值
在 ejb3 子系统中,您可以使用 default-stateful-bean-session-timeout 属性,为服务器实例上部署的所有有状态会话 Bean(SFSB)配置默认的全局超时值。此属性位于 JBoss EAP 服务器配置文件中。您可以使用 Management CLI 配置属性。
属性行为因服务器模式而异。例如:
- 在单机服务器中运行时,配置的值将应用到应用服务器上部署的所有 SFSB。
- 在受管域中运行时,服务器组内服务器实例上部署的所有 SFSB 都将获得并发超时值。
当您更改属性的全局超时值时,更新的设置仅适用于新部署。重新加载服务器,以将新设置应用到当前部署。
默认情况下,属性值设为 -1 毫秒,这意味着部署的 SFSB 配置为永不超时。但是,您可以为该属性配置另外两种有效值,如下所示:
-
当值为
0时,SFSB 有资格被ejb容器立即移除。 -
当值大于
0时,SFSB 在被ejb容器移除前会在指定时间内保持闲置状态。
您仍然可以使用预先存在的 @StatefulTimeout 注释或 stateful-timeout 元素(位于 ejb-jar.xml 部署描述符中)来配置 SFSB 的超时值。但是,设置此类配置会将默认的全局超时值覆盖 SFSB。
在 database-data-store 中强制 Jakarta Enterprise Beans 计时器刷新
现在,您可以使用 EE 拦截器设置 wildfly.ejb.timer.refresh.enabled 标志。当应用调用 TimerService.getAllTimers() 方法时,JBoss EAP 会检查此标志。如果此标志设为 true,JBoss EAP 将在返回结果之前从数据库刷新 Jakarta Enterprise Beans 定时器。
在前面的 JBoss EAP 版本中,可使用 database-data-store 中的 refresh-interval 属性在数据库中刷新 Jakarta Enterprise Beans 定时器读取。用户可以设置 refresh-interval 属性值(毫秒)来刷新 Jakarta Enterprise Beans 定时器读取。
有关 Jakarta 企业 Beans 集群数据库支持的过期信息,请参阅开发 Jakarta 企业 Beans 集群数据库计时器 指南。
从 Jakarta Enterprise Beans 访问运行时信息
借助 JBoss EAP 7.4,您可以访问 Jakarta Enterprise Beans 的运行时数据。有状态会话 Bean、无状态会话 Bean 和单例 Bean 各自返回不同的运行时信息。例如,以下命令返回无状态会话 Bean 的运行时数据:
/deployment=ejb-management.jar/subsystem=ejb3/stateless-session-bean=ManagedStatelessBean:read-resource(include-runtime)
/deployment=ejb-management.jar/subsystem=ejb3/stateless-session-bean=ManagedStatelessBean:read-resource(include-runtime)
通过 HTTP 动态发现 Jakarta Enterprise Beans
借助 JBoss EAP 7.4,您可以通过 HTTP 使用 Jakarta Enterprise Beans 的动态发现。要使用这个功能,请在 ejb-remote 配置集中添加类似如下的配置:
用于远程 Jakarta Enterprise Beans 调用的全局压缩配置
借助 JBoss EAP 7.4,您可以全局配置对远程 Jakarta Enterprise Beans 的调用压缩。要在独立客户端上全局配置压缩,请在 jboss-ejb-client.properties 文件中指定 default.compression 属性。要在服务器上全局配置压缩,在应用程序部署单元中的 jboss-ejb-client.xml 描述符文件中的 <client-conext> 项中包括 default-compression 属性。
<jboss-ejb-client xmlns="urn:jboss:ejb-client:1.4">
<client-context default-compression="5">
<profile name="example-profile" />
</client-context>
</jboss-ejb-client>
<jboss-ejb-client xmlns="urn:jboss:ejb-client:1.4">
<client-context default-compression="5">
<profile name="example-profile" />
</client-context>
</jboss-ejb-client>
在 Elytron 中设置主要传播行为的新属性
在 JBoss EAP 7.4 中,新可选属性添加到 ejb3 子系统的 application-security-domain 元素中。通过新属性 legacy-compliant-principal-propagation,您可以控制 Jakarta 企业 Beans 应用程序的主要传播行为。
legacy-compliant-principal-propagation 的默认值是 true。因此,主体传播行为默认为兼容旧 安全 子系统。
如果您将 属性配置为 false,Elytron 提供了任何本地未安全的 Jakarta Enterprise Beans,它们没有 作为 匿名主体身份运行。此配置符合 Elytron 之前的行为。
有关 Elytron 与 ejb 子系统集成的信息,请参阅 开发 Jakarta 企业 Beans 应用指南中的 Elytron 与 ejb 子系统集成。