7.4.0 发行注记

Red Hat JBoss Enterprise Application Platform 7.4

Red Hat JBoss Enterprise Application Platform 7.4

Red Hat Customer Content Services

摘要

本发行注记包含与 Red Hat JBoss Enterprise Application Platform 7.4 相关的重要信息。
从 JBoss EAP 7.4 开始,我们将专门专注于用于认证/合规的 Jakarta EE 测试套件。为了支持可能要从以前的 JBoss EAP 7 版本迁移其应用的现有客户,JBoss EAP 7.4 维护向后兼容性。Oracle 向 Jakarta EE 8 贡献了 Java EE 8 TCK,这些 EE 8 供 Jakarta EE 8 实施(如 JBoss EAP)用于兼容 Jakarta EE 8。Jakarta EE 8 API 等同于 Java EE 8 API。Jakarta EE 8 规范(技术)等同于 Java EE 8 规范(技术)。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。由于这一努力的精力,这些更改将在即将发布的版本中逐渐实施。有关让我们的语言更加包含的更多详情,请参阅我们的CTO Chris Wright 信息

提供有关 JBoss EAP 文档的反馈

要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。

流程

  1. 单击以下链接 以创建 ticket
  2. 请包含 文档 URL章节编号 并描述问题
  3. Summary 中输入问题的简短描述。
  4. Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
  5. Submit 创建问题,并将问题路由到适当的文档团队。

第 1 章 支持的配置

  • JBoss EAP 7.4 支持 MS SQL Server 2019。
  • JBoss EAP 7.4 中已测试并支持 PosgreSQL 13.2 和 EnterpriseDB 13.1。
  • 已测试 MariaDB 10.3 和 MariaDB Galera 集群 10.3,JBoss EAP 7.4 中受支持。
  • IBM DB2 11.5 经过测试,在 JBoss EAP 7.4 中受到支持。

红帽客户门户上的 Red Hat JBoss Enterprise Application Platform (EAP) 7 支持的配置知识库文章列出了在 JBoss EAP 7.4 版本中测试的数据库和数据库连接器。

第 2 章 新功能及功能增强

2.1. 安全性

支持在凭证存储中自动更新凭证

现在,当您配置指定了 storeclear-text 属性的凭证引用时,Elytron 会自动将凭证添加到之前定义的凭证存储中。

在这个版本中,在从 credential-reference 引用它之前,不需要将凭证添加到现有凭证存储中。此自动化流程减少了您在不同子系统中引用新凭据所需的步骤。

Elytron 中新角色映射器 regex-role-mapper

Elytron 现在提供了一个新的角色映射器 regex-role-mapper,以定义基于正则表达式(regex)的安全角色映射。

您可以使用 regex-role-mapper 将角色列表转换为更简单的角色。例如:

  • *-adminadmin
  • *-useruser

使用 regex-role-mapper 时,您不需要实施自己的自定义组件来转换安全角色。如需更多信息,请参阅 regex-role-mapper 属性

访问远程客户端的 IP 地址

现在,您可以将 source-address-role-decoder 角色解码器添加到 elytron 子系统。通过配置此角色解码器,您可以在做出授权决策时从远程客户端获取更多信息。

source-address-role-decoder 提取远程客户端的 IP 地址,并检查它是否与 pattern 属性或 source-address 属性中指定的 IP 地址属性匹配。如果远程客户端的 IP 地址与任一属性中指定的 IP 地址匹配,则 roles 属性会将角色分配给用户。当您配置了 source-address-role-decoder 后,您可以在 安全域role-decoder 属性中引用它。

aggregate-role-decoder 角色解码器

aggregate-role-decoder 由两个或多个角色解码器组成。每个指定角色解码器完成其操作后,它会将角色添加到 aggregate-role-decoder 中。

您可以使用 aggregate-role-decoder 来添加为用户分配角色的角色解码器,从而做出授权决策。此外,aggregate-role-decoder 还为您提供了便捷的方式来聚合从各个角色解码器返回的角色。

使用 TLS 协议版本 1.3 和 JDK 11

Elytron 现在能够对 JDK 11 运行的 JBoss EAP 使用传输层安全(TLS)协议 1.3。

TLS 1.3 默认禁用。您可以通过在 elytron 子系统的 SSL 上下文资源定义中配置新的 cipher-suite-names 属性来启用 TLS 1.3。

与 TLS 1.2 相比,在使用 JDK 11 运行 TLS 1.3 时您可能会体验到较低的性能。当发出大量 TLS 1.3 请求时,性能可能会降低。系统升级到较新的 JDK 版本可以提高性能。在生产环境中启用前,使用 TLS 1.3 测试您的设置是否出现性能下降的问题。

使用 TLS 的 OpenSSL 供应商启用对 TLS 1.3 协议的支持

JBoss EAP 7.4 包括对传输层安全 (TLS) 协议版本 1.3 的支持。TLS 1.3 协议用于 TLS 的 OpenSSL 提供程序默认为禁用。您可以通过在 ssl-context 配置中配置 provider 属性,或者在 Elytron 子系统配置中使用 initial- providers 属性注册 OpenSSL 供应商,为 TLS 启用 OpenSSL 供应商。

您可以通过在 ssl-context 配置中配置 cipher-suite-names 属性,通过为 TLS 启用对 TLS 1.3 协议的支持。

与 TLS 1.2 相比,在使用 JDK 11 运行 TLS 1.3 时您可能会体验到较低的性能。当发出大量 TLS 1.3 请求时,性能可能会降低。系统升级到较新的 JDK 版本可以提高性能。在生产环境中启用前,使用 TLS 1.3 测试您的设置是否出现性能下降的问题。

在 JDK 配置中重新启用对 TLS 1.1 协议的支持

默认情况下,JDK 的新版本可能会禁用传输层安全(TLS)协议版本 1.1。如果您的 JBoss EAP 7.4 配置必须符合联邦信息处理标准(FIPS),您可能需要在 JDK 配置中重新启用对 TLS 1.1 协议的支持。

有关与 JBoss EAP 7.4 兼容 TLS 协议的更多信息,请参阅红帽客户门户上的 Red Hat JBoss Enterprise Application Platform(EAP)7 支持的配置页面。

使用 SSH 凭据连接远程 Git SSH 存储库

借助 JBoss EAP 7.4,您可以使用 SSH 凭据连接远程 Git SSH 存储库。此存储库可以管理您的服务器配置数据、属性文件和部署。

您必须使用 elytron 配置文件来指定 SSH 凭证。然后,您可以启动单机服务器实例,并让远程 Git SSH 存储库管理您的服务器配置文件历史记录。

如果需要,您可以使用以下方法之一生成 SSH 密钥:

  • elytron-tool.sh 脚本
  • OpenSSH 命令行

有关连接到远程 Git SSH 存储库的详情,请参考使用远程 Git SSH 存储库

新主体转换器添加到 elytron 子系统

JBoss EAP 7.4 在 elytron 子系统中包含一个新的主体转换器,即 case-principal-transformer。您可以使用 case-principal-transformer 将主体的用户名更改为大写或小写字符。

能够自动生成自签名证书

借助 JBoss EAP 7.4,您可以自动生成自签名证书。

仅在测试环境中使用自签名证书。不要在生产环境中使用自签名证书。

要使用这一新功能,可在 undertow 子系统中更新 http-listener 的配置。

    batch
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=applicationSSC)
    run-batch
    reload

更新配置后,如果不存在密钥存储文件,则 JBoss EAP 第一次收到 HTTPS 请求时,系统会自动生成自签名证书。使用自签名证书时,JBoss EAP 会记录警告。

配置多个安全域来支持故障切换

借助 JBoss EAP 7.4,您可以配置故障转移安全域。如果安全域不可用,JBoss EAP 将使用故障转移域。以下代码演示了一个示例配置:

    <failover-realm name="myfailoverrealm" delegate-realm="LdapRealm" failover-realm="LocalRealm" />

跨多个安全域的分布式身份

利用 JBoss EAP 7.4,您可以配置分布式安全域,按顺序调用已配置域的列表,直到找到了具有身份的域。以下代码演示了一个示例配置:

    <distributed-realm name="mymainrealm" realms="realm1 realm2 realm3" />

elytron 子系统中通过 HTTP 访问外部凭据

借助 JBoss EAP 7.4,JBoss EAP 可以在使用 HTTP 身份验证时基于外部创建的凭据对用户进行身份验证。

要使用此功能,请将安全域配置为在验证用户时使用外部机制。

通过 RESTEasy 客户端使用 Elytron 客户端身份验证配置

JBoss EAP 7.4 版本将 RESTEasy 客户端与 Elytron 客户端集成。RESTEasy 客户端从 Elytron 客户端配置使用身份验证信息,如凭据、bearer 令牌和 SSL 配置。

您可以使用以下方法指定 RESTEasy 客户端可以使用的 Elytron 客户端配置:

  • 通过向 Elytron 客户端提供 wildfly-config.xml 文件。Elytron 客户端搜索 wildfly-config.xmlMETA-INF/wildfly-config.xml 的类路径。

    • 或者,您可以使用 wildfly.config.url 系统属性指定 wildfly-config.xml 文件的路径。
  • 通过使用 Elytron 客户端 API 以编程方式指定身份验证配置。

用于提供初始 secret 密钥的 secret 密钥凭证存储

现在,您可以使用名为 secret-key-credential-store 的新凭证存储为应用服务器进程提供初始 secret 密钥。使用这个凭证存储,您可以获得比基于密码的加密更强大的安全性,因为您现在可以管理自己的初始 secret。有关为 JBoss EAP 提供初始密钥的信息,请参阅向 JBoss EAP 提供初始密钥以解锁受保护的资源

另外,您现在可以为所有凭证存储生成 secret 密钥,也可以导出和导入之前生成的 secret 密钥。您还可以使用现有的凭据存储来存储 secret 密钥,以及使用管理操作来维护它们。如需更多信息,请参阅使用 JBoss EAP 管理 CLI 的凭据存储操作

用于保护安全敏感字符串的加密表达式

现在,您可以使用加密表达式在管理模型中安全地存储安全敏感的字符串。Elytron 使用高级加密标准(AES)加密加密纯文本字符串,并使用存储在凭据存储中的 SecretKey 密钥在运行时动态解密加密表达式。

您可以使用 elytron 子系统中的新资源 expression-encryption 配置加密表达式。使用 create-expression 管理操作来创建加密表达式。有关加密表达式的详情,请参考 Elytron 中的加密表达式

注意

使用凭据存储来存储密码。密码库已弃用,并将在以后的发行版本中删除。

elytron-tool 的更新

您可以将 elytron-tool 用于现有和新凭证存储。使用 credentials-store 命令管理机密密钥,并生成用于表达式中的加密令牌。

2.2. 服务器管理

支持 Microsoft Windows Server 2019

您可以在 Microsoft Azure 中使用 JBoss EAP 7.4 时使用 Microsoft Windows Server 2019 虚拟操作系统。

使用全局目录在部署之间分发共享库

在 JBoss EAP 7.3 及更早的版本中,您无法创建和配置全局目录,以在服务器上运行的部署之间分发共享库。这些功能已添加到 ee 子系统。

全局目录可以更好地替代全局模块方法。例如,如果要更改全局模块中列出的库名称,您必须删除全局模块,更改库的名称,然后将库添加到一个新的全局模块。如果您更改了全局目录中所列的库名称,您只需要重新启动服务器,以便对所有部署都可用库名称更改。

如果要在已部署的应用间共享多个库,则使用全局目录也是更好的解决方案。

如需更多信息,请参阅 JBoss EAP 配置指南中的定义全局模块

支持只读服务器配置目录

在 JBoss EAP 7.3 和更早版本中,如果配置目录配置为只读,服务器将无法启动。JBoss EAP 7.4 引入了使用只读服务器配置目录的功能。如果配置目录是只读的,请在命令中包含 --read-only-server-config 参数以启动服务器。

能够传递 JBoss 模块参数

在 JBoss EAP 7.3 及较早版本的配置文件中,JBoss 模块不包括传递模块参数的能力。在 JBoss EAP 7.4 的脚本配置文件中,您现在可以添加 MODULE_OPTS=-javaagent:my-agent.jar 环境变量以传递 JBoss 模块参数。

当之前需要在引导类路径中添加日志管理器时,您可以使用此功能。

Infinispan API

在以前的版本中,Infinispan API 在 EAP 中被标记为私有,因为它们是 Red Hat Data Grid 项目的一部分。JBoss EAP7.4 中现已全面包含和支持这些 API。包括的模块有:

  • org.infinispan
  • org.infinispan.client.hotrod
  • org.infinispan.commons

可配置选项,以允许启动期间的请求

添加了用于安全启动(graceful startup)模式的选项,以便应对用户请求在启动过程早期发生的情况。这同时支持受管域和单机服务器。

  • 对于受管域中的服务器,server-group 元素现在支持 secureful-startup 参数。其默认值设为 true
  • 在单机服务器中,将命令行选项 --graceful-startup=false 设置为所需的值。

添加了通用脚本文件

您现在可以使用 文件 common.conf 来自定义 JBoss EAP 实例环境。通过这个文件可设置通用环境变量,供 $JBOSS_HOME/bin 目录中所有脚本使用。您可以将文件添加到 $JBOSS_HOME/bin,或者添加到 COMMON_CONF 环境变量中的 文件的路径。此功能支持批处理脚本和 powershell 脚本(common.conf.batcommon.conf.ps1)。

2.3. 管理 CLI

command CLI 命令的增强

CLI 命令 command 具有一个新的 --node-child 参数,您可以使用该参数编辑属性或管理特定子节点的操作。

注意

在使用 --node-child 参数之前,请检查管理模式中是否存在子节点。

使用 command add --node-child --help CLI 命令查看 --node-child 参数的描述。

新角色解码器添加到 elytron 子系统

在 JBoss EAP 7.4 中,您可以使用管理 CLI 将 source-address-role-decoder 角色解码器添加到 elytron 子系统。通过在 mappers 元素中配置此角色解码器,您可以在做出授权决策时从远程客户端获取更多信息。

您可以为 source-address-role-decoder 配置以下属性:

属性描述

pattern

指定远程客户端的 IP 地址或要匹配的远程客户端 IP 地址的正则表达式。

source-address

指定远程客户端的 IP 地址。

roles

如果远程客户端的 IP 地址与 pattern 属性或 source-address 属性中指定的值匹配,请向用户提供要分配给用户的角色列表。

为受管执行器服务公开运行时统计信息

在之前的 JBoss EAP 发行版中,在 ee 子系统中不提供运行时统计数据,无法用于受管执行器服务。

现在,您可以通过查看使用新的管理 CLI 属性生成的运行时统计信息来监控受管 executor 服务的性能。添加了以下管理 CLI 属性:

  • active-thread-count:主动执行任务的近似线程数
  • completed-task-count:已完成执行的任务大约总数
  • hung-thread-count: 挂起的 executor 线程数
  • max-thread-count: executor 线程的最大数量
  • current-queue-size:executor 任务队列的当前大小
  • task-count :已提交过的任务总数
  • thread-count :当前执行器线程数

终止挂起的任务

您现在可以手动尝试终止 EE 子系统中的挂起任务。要做到这一点,请运行以下命令:

/subsystem=ee/managed-executor-service=default:terminate-hung-tasks()

一个新的属性 hung-task-termination-period 添加到 managed-executor-service

您现在可以自动尝试终止 EE 子系统中的挂起任务。为实现这一目标,新属性 hung-task-termination-period 添加到 managed-scheduled-executor-service 资源中。

  • hung-task-termination-period:以毫秒为单位尝试挂起的任务、通过取消此类任务并中断其执行的线程而自动终止的时间。如果值为 0(默认值),则不会取消挂起的任务。

对权限文件使用属性替换

从 JBoss EAP 6 升级到 JBoss EAP 7 的用户无法将 Java 策略文件中的文件权限迁移到 permissions.xmljboss-permissions.xml 文件。无法使用属性替换在 permissions.xmljboss-permissions.xml 文件中迁移文件权限。

现在,您可以对 permissions.xmljboss-permissions.xml 文件使用属性替换。

使用 ee 子系统中的 jboss-descriptor-property-replacementspec-descriptor-property-replacement 属性可以启用或禁用 jboss-permissions.xmlpermissions.xml 文件的属性替代。

配置 RESTEasy 参数

您现在可以使用 JBoss EAP 管理 CLI 更改 RESTEasy 参数的设置。全局更改会将更新的设置作为 web.xml 上下文参数应用到新部署。

您可以使用管理 CLI 中的 /subsystem=jaxrs 资源使用 :write-attribute 操作来修改参数的设置。例如:

/subsystem=jaxrs:write-attribute(name=resteasy-add-charset, value=false)
注意

当您更改参数的设置时,更新的设置仅适用于新部署。重新启动服务器,以将新设置应用到当前部署。

有关 RESTEasy 元素的详情,请参阅 RESTEasy 配置参数表

配置 RESTEasy 供应商

在 RESTEasy 中,某些内置提供程序默认为启用。您现在可以在 JBoss EAP 管理 CLI 中使用新的 RESTEasy 参数 resteasy.disable.providers 来禁用特定的内置提供程序。

以下示例演示了如何禁用内置供应商 FileProvider

/subsystem=jaxrs:write-attribute(name=resteasy-disable-providers, value=[org.jboss.resteasy.plugins.providers.FileProvider])

您可以将 resteasy.disable.providers 参数与预先存在的参数 resteasy.use.builtin.providers 搭配使用,以自定义应用到所有新部署的特定供应商配置。

注意

当您更改 resteasy.disable.providers 参数的设置时,更新的设置只适用于新部署。重新启动服务器,以将新设置应用到当前部署。

2.4. 管理控制台

新角色解码器添加到 elytron 子系统

在 JBoss EAP 7.4 中,您可以使用管理控制台将 source-address-role-decoder 角色解码器添加到 elytron 子系统。通过在 mappers 元素中配置此角色解码器,您可以在做出授权决策时从远程客户端获取更多信息。

您可以为 source-address-role-decoder 配置以下属性:

属性描述

pattern

指定远程客户端的 IP 地址或要匹配的远程客户端 IP 地址的正则表达式。

source-address

指定远程客户端的 IP 地址。

roles

如果远程客户端的 IP 地址与 pattern 属性或 source-address 属性中指定的值匹配,请向用户提供要分配给用户的角色列表。

2.5. 日志记录

Apache Log4j2 API

在 JBoss EAP 7.4 中,您可以使用 Apache Log4j2 API 而不是 Apache Log4j API 将应用日志记录消息发送到 JBoss LogManager 实施。

JBoss EAP 7.4 发行版本支持 Log4J2 API,但该发行版本不支持 Apache Log4j2 核心实施 org.apache.logging.log4j:log4j-core 或其配置文件。

2.6. Infinispan 子系统

在部署中使用 Infinispan API

现在,您可以使用 Infinispan 子系统创建远程和嵌入的 JBoss EAP 缓存,而无需安装单独的模块。这可让您执行读写操作来缓存部署,但不包括对所有数据网格功能或以下 API 的支持:

  • org.infinispan.query
  • org.infinispan.counter.api
  • org.infinispan.lock

另外,Data Grid CDI 模块还没有包括在 Infinispan 子系统中。

如果您对任何带有数据网格功能或功能使用 JBoss EAP 有疑问,请联系红帽支持团队。

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)

通过 HTTP 动态发现 Jakarta Enterprise Beans

借助 JBoss EAP 7.4,您可以通过 HTTP 使用 Jakarta Enterprise Beans 的动态发现。要使用这个功能,请在 ejb-remote 配置集中添加类似如下的配置:

<remote connector-ref="http-remoting-connector" thread-pool-name="default">
    <channel-creation-options>
        <option name="MAX_OUTBOUND_MESSAGES" value="1234" type="remoting"/>
    </channel-creation-options>
    <profiles>
        <profile name="my-profile">
            <remote-http-connection name="ejb-http-connection" uri="http://127.0.0.1:8180/wildfly-services"/>
        </profile>
    </profiles>
</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>

在 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 子系统集成

2.8. Hibernate

配置 wildfly.jpa.skipquerydetach persistence 单元属性

您可以从容器管理的持久性上下文的 persistence.xml 文件中配置 wildfly.jpa.skipquerydach persistence 单元属性。

wildfly.jpa.skipquerydetach 的默认值为 false。使用此设置设置事务范围的持久性上下文,以便立即将查询结果与开放持久性上下文分离。

wildfly.jpa.skipquerydetach 配置为 true,以将事务范围的持久上下文设置为在持久上下文关闭时分离查询结果。这启用了非标准规格扩展。

对于将非独立规格扩展 jboss.as.jpa.deferdetach 设置为 true 的应用,您也可以将 wildfly.jpa.skipquerydetach 设置为 true

2.9. Web 服务

将 Elytron 与 Web 服务客户端集成

现在,您可以将 Web 服务客户端配置为使用 Elytron 客户端配置来获取其凭据、身份验证方法和 SSL 上下文。

当您使用 JBossWS API 为 Web 服务客户端分配任何配置属性时,也会加载和配置 Elytron 客户端中的用户名、密码和 SSL 上下文。可以配置以下验证方法:

  • UsernameToken Profile 身份验证
  • HTTP 基本身份验证
  • TLS 协议

您可以使用 wildfly-config.xml 中的 <webservices/> 元素来指定凭证用于 HTTP 基本身份验证,g UsernameToken Profile 身份验证或两者。

RESTEasy 3.x 访问所有标准 MicroProfile ConfigSources 的功能

RESTEasy 3.x 现在可以访问所有标准 MicroProfile ConfigSources。以下额外的 ConfigSource 也会添加到 RESTEasy 3.x 中:

  • servlet init-params (普通 60)
  • filter init-params (普通 50)
  • servlet context-params (普通 40)

在以前的版本中,这些功能仅包含在 RESTEasy 4.x 中。在这个版本中,RESTEasy 可使用或不使用 MicroProfile ConfigSources 访问配置参数。如果没有 MicroProfile 配置实施,RESTEasy 会退回到从 ServletContext 参数和 init 参数收集参数的旧方法。

现在,您可以使用 undertow 子系统中的 samesite-cookie predicated 处理程序在当前 JBoss EAP 发行版中为 Cookie 配置 SameSite 属性。通过这个处理程序,您可以更新您的服务器配置,而无需更改您的应用程序。此增强支持更改最近在主要 Web 浏览器中实施的 Cookie 处理以提高安全性。

resteasy CDI 模块中配置 Eclipse MicroProfile REST 客户端 API

Eclipse MicroProfile REST 客户端 API 现在是一个可选的依赖项,您可以在 resteasy CDI 模块中进行配置。

2.10. 消息传递

JMS 核心网桥上的重复消息

在针对具有过载目标队列的服务器的个别实例中,通过 JMS 核心网桥发送大型消息可能会导致您的消息重复。

暂停主题的能力

借助 JBoss EAP 7.4,您不仅可以暂停队列,还能暂停一个主题。当您暂停一个主题时,JBoss EAP 会收到消息,但不发送消息。恢复该主题时,JBoss EAP 将传递消息。要暂停某个主题,请发出类似以下示例的命令:

/subsystem=messaging-activemq/server=default/jms-topic=topic:pause()

要恢复某个主题,请发出类似以下示例的命令:

/subsystem=messaging-activemq/server=default/jms-topic=topic:resume()

检测代理网络隔离的能力

现在,您可以 ping 可配置的主机列表来检测代理的网络隔离。您可以使用以下参数来配置此功能:

  • network-check-NIC
  • network-check-period
  • network-check-timeout
  • network-check-list
  • network-check-URL-list
  • network-check-ping-command
  • network-check-ping6-command

例如,要通过 ping IP 地址 10.0.0.1 来检查网络状态,请运行以下命令:

/subsystem=messaging-activemq/server=default:write-attribute(name=network-check-list, value="10.0.0.1")

call-timeout 属性

JMS 核心网桥上的 call-timeout 属性可以配置为 ActiveMQ Artemis 的一部分。在本发行版中,您可以通过管理 API 在 EAP 本身中配置 call-timeout 变量。

Red Hat AMQ 连接池

Red Hat AMQ 最近除了支持单线程数据库连接外,还开始支持连接池。借助 JBoss EAP 7.4,现在您可以在将 Red Hat AMQ 与 JBoss EAP 搭配使用时使用连接池。

2.11. 脚本

用于启动服务器的新环境变量

现在,您可以将 MODULE_OPTS 环境变量添加到 JBoss EAP 7.4 实例中的脚本配置文件。

在单机服务器中,使用以下文件:

  • 在 RHEL 上,启动脚本使用 EAP_HOME/bin/standalone.conf 文件。
  • 在 Windows 服务器上,在命令提示符处使用 EAP_HOME\bin\standalone.bat 文件。
  • 在 Windows 服务器上,在 PowerShell 上,使用 EAP_HOME\bin\standalone.ps1 文件。

对于域中的服务器,您可以将 module-options 属性添加到主机 JVM 配置或服务器的 JVM 配置中。

MODULE_OPTS 环境变量会影响整个服务器。例如,如果您有需要日志记录的 Java 代理,请将 MODULE_OPTS 的值设置为 -javaagent:my-agent.jar。这将在配置日志记录后初始化代理。

2.12. OpenShift

为 JBoss EAP S2I 镜像提供自定义 Galleon 功能包支持

您可以使用三个新环境变量为 JBoss EAP S2I 镜像提供自定义 Galleon 功能包支持。您可以使用 S2I 构建阶段下表中概述的环境变量:

表 2.1. 自定义 Galleon 功能打包环境变量

环境变量描述

GALLEON_DIR=<PATH>

<PATH> 是包含可选 Galleon 自定义内容的应用程序根目录的相对目录。目录默认为 galleon

GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<PATH>

<PATH> 是包含自定义 feature-packs 的 Maven 本地存储库目录的绝对路径。目录默认为 galleon/repository

GALLEON_PROVISION_FEATURE_PACKS=<LIST_OF_GALLEON_FEATURE_PACKS>

<LIST_OF_GALLEON_FEATURE_PACKS> 是 Maven 协调标识的自定义 Galleon 功能包的逗号分隔列表。列出的功能包必须与构建器镜像中存在的 JBoss EAP 7.4 服务器的版本兼容。

您可以使用 GALLEON_PROVISION_LAYERS 环境变量来为您的服务器设置 Galleon 层(由自定义功能包定义)。

只读服务器配置目录

JBoss EAP 支持只读服务器配置目录。当服务器配置目录是一个只读目录时,您可以使用 --read-only-server-config 命令行参数锁定服务器配置。此功能仅在将 JBoss EAP 作为单机服务器运行时使用。

在 OpenShift 上部署 JBoss EAP 快速入门的说明

对于 JBoss EAP 版本,所有与 OpenShift 兼容的快速入门现在包括在 OpenShift 上部署 JBoss EAP 快速入门的说明。快速入门中的 readme.html 文件包括以下部分:

  • OpenShift 入门
  • 准备 OpenShift 以进行快速入门部署
  • 导入最新的 JBoss EAP for OpenShift 镜像流和模板
  • 将 JBoss EAP for OpenShift Source-to-Image(S2I)Quickstart 部署到 OpenShift
  • OpenShift 部署后任务

分布式 Web 子系统的新 Galleon 层

JBoss EAP 提供 web-passivation 层,以提供配置了本地 Web 容器缓存的 distribut-web 子系统。Web-passivation 层是一个解码器层。

2.13. Red Hat CodeReady Workspaces (CRW)

Red Hat CodeReady Workspaces 支持 JBoss EAP 7.4 开发文件

您可以使用 JBoss EAP 7.4 开发文件 YAML 文件在 CRW 上定义 JBoss EAP 开发环境。您可以从 jboss-eap-quickstarts GitHub 网页下载 JBoss EAP 7.4 开发文件示例。

开发文件包括以下组件:

  • 浏览器 IDE 配置
  • 预定义的命令列表
  • 应用程序运行时环境
  • 必须克隆的存储库的位置

在 CRW 上,您可以选择以下方法之一来创建 JBoss EAP 7.4 工作区环境:

  • 将 JBoss EAP 开发文件的 URL 直接复制到 CRW 控制面板上的 Get Started 页面的 Devfile 部分。您必须选择 Load devfile 按钮,将开发文件添加到 CRW 仪表板中。
  • 在 OpenShift 上打开您的 CRW 实例,并在 Workspace 菜单的 Devfile 选项卡中输入 JBoss EAP 开发文件的 URL。保存开发文件,然后重新启动 CRW 实例。
重要

如果要在 JBoss EAP 7.4 工作环境中使用 Java 8 开发文件,请不要安装 Java 11 插件,因为它与 Java 8 插件冲突。

其他资源

第 3 章 不支持的功能

3.1. 不支持的功能

由于维护成本高、社区兴趣低和更好的替代解决方案,部分技术的支持已被移除。

平台和特性

JBoss EAP 弃用了版本 7.1 中的以下平台:JBoss EAP 7.4 中未测试这些平台。

  • x86_64 上的 Oracle Solaris 10
  • SPARC64 上的 Oracle Solaris 10
  • x86_64 上的 Oracle Solaris 11
  • SPARC64 上的 Oracle Solaris 11

JBoss EAP 7.4 不包括这些平台的 Wildfly SSL 原生。因此,Oracle Solaris 平台的 SSL 操作可能比之前版本的 JBoss EAP 慢。

数据库和数据库连接器

  • IBM DB2 11.1
  • PostgreSQL/EnterpriseDB 11
  • MariaDB 10.1
  • MS SQL 2017

轻量级目录访问协议 (LDAP) 服务器

  • Red Hat Directory Server 10.0
  • Red Hat Directory Server 10.1

使用 Java jdk8u292-b10 的密钥存储缺陷

如果您在 Java jdk8u292-b10 上运行 JBoss EAP,并且使用传统安全域或 Elyton 轻量级目录访问协议 (LDAP) 密钥存储,则无法使用公共加密标准 (PKCS) #12 密钥存储。解决方法是将您的 JBoss EAP 实例配置为使用 PKCS #12 密钥存储的更强大的默认密钥保护算法。其他 Elytron 密钥存储类型不受此缺陷的影响。

RESTEasy 参数

RESTEasy 提供 Servlet 3.0 ServletContainerInitializer 集成接口,用于对 servlet 的资源和提供程序执行自动扫描。容器可以使用此集成接口来启动应用。因此,不再支持使用以下 RESTEasy 参数:

  • resteasy.scan
  • resteasy.scan.providers
  • resteasy.scan.resources

MicroProfile 功能

JBoss EAP 7.4 或未来版本中不包含作为技术预览包含在 JBoss EAP 7.3 中的以下 MicroProfile 功能:

  • MicroProfile Config
  • MicroProfile REST 客户端
  • MicroProfile Health

    JBoss EAP 不再包含 microprofile-smallrye-health 子系统,因此不再提供应用健康状态检查。JBoss EAP 继续包括服务器运行时健康检查。

  • MicroProfile Metrics

    JBoss EAP 不再包含 microprofile-smallrye-metrics 子系统,因此应用程序指标不再可用。JBoss EAP 继续包括 JVM 和服务器指标的端点。

  • MicroProfile OpenTracing

    MicroProfile OpenTracing 现在是 observability 解码层的一部分。

这些功能现在是 JBoss EAP 扩展包(JBoss EAP XP)的一部分。安装 JBoss EAP XP,以获取 JBoss EAP 中完整的 MicroProfile 支持。

有关支持 MicroProfile 和 JBoss EAP XP 的完整信息,请参阅 JBoss EAP XP 生命周期和支持策略页面

Red Hat JBoss Operations Network

从 JBoss EAP 版本 7.2 开始,使用 Red Hat JBoss Operations Network (JON) 进行 JBoss EAP 管理已弃用。对于 JBoss EAP 7.4,不再支持 Red Hat JON 用于 JBoss EAP 管理。

MS SQL Server 2017

JBoss EAP 7.4 不支持 MS SQL Server 2017。

Microsoft Windows Server 2012

在 Microsoft Azure 中使用 JBoss EAP 7.4 时,JBoss EAP 7.4 不支持使用 Microsoft Windows Server 2012 虚拟操作系统。

3.2. 已弃用的功能

本发行版本中弃用了一些功能。这意味着不会对这些功能进行任何增强,而且它们将来可能会被删除,通常是下一个主要版本。

红帽将根据我们的标准支持条款和条件继续提供完全支持和漏洞修复。有关红帽支持政策的更多信息,请参阅红帽客户门户网站中的 Red Hat JBoss Middleware 产品更新和支持政策

有关哪些功能已被弃用的详情,请查看红帽客户门户网站中的 JBoss Enterprise Application Platform 组件详情

平台和特性

对以下平台和功能的支持已弃用:

Eclipse MicroProfile REST 客户端 API

Eclipse MicroProfile REST 客户端 API 已从 jaxrs 子系统中弃用。

OpenShift Container Platform 3.11

OpenShift Container Platform(OCP)3.11 已弃用,适用于 JBoss EAP7.4。

操作系统

  • i686 上的 Microsoft Windows Server
  • i686 上的 Red Hat Enterprise Linux(RHEL)6
注意

尽管之前的 JBoss EAP 发行版中弃用了对这些平台的支持,但链接到这些平台的一些工件和资源并未被删除,如 wildfly-openssl 原生库绑定。对于 Red Hat JBoss Enterprise Application Platform 7.4,这些工件和资源已被移除。

OpenJDK11 OpenShift 镜像支持多个构架

IBM Z 和 IBM Power 系统的 OpenJ9 镜像将被弃用。以下 OpenJDK11 Builder 和 Runtime 镜像已更新为支持多个构架:

  • jboss-eap-7/eap74-openjdk11-openshift-rhel8 (Builder 镜像)
  • jboss-eap-7/eap74-openjdk11-runtime-openshift-rhel8 (运行时镜像)

您可以在以下构架中使用 OpenJDK11 镜像:

  • x86 (x86_64)
  • s390x (IBM Z)
  • ppc64le(IBM Power Systems)

如果要将 OpenJ9 Java 虚拟机(JVM)与 OpenJDK11 镜像一起使用,请参阅 Power 和 Z OpenShift 镜像的 Java 更改

Spring BOM

位于 Red Hat Maven 存储库中的以下 Spring BOM 现已弃用:

  • jboss-eap-jakartaee8-with-spring4

虽然红帽测试 Spring 应用程序是否在 Red Hat JBoss Enterprise Application Platform 7.4 上运行,但您必须使用最新版本的 Spring Framework 及其 BOM(例如,x.y.z.RELEASE)用于在 JBoss EAP 7.4 上开发您的应用。

有关 Spring Framework 版本的更多信息,请参阅 GitHub 上的 Spring Framework 版本

BOM

现有 BOM 已被弃用,其视图可用于提供与 JBoss EAP 下一个主要版本中的功能相关的 BOMs(可能包括一些现有的 BOM)。

Java 开发套件(JDK)
  • JDK 8
  • JDK 11

    备注

在未来的 JBoss EAP 版本中,将根据行业(例如 Jakarta EE 10+、MicroProfile 等)和市场需求,评估 Java SE 要求。

JBoss EAP OpenShift 模板

OpenShift 的 JBoss EAP 模板已弃用。

eap74-beta-starter-s2i.jsoneap73-third-party-db-s2i.json 模板

eap74-beta-starter-s2i.jsoneap74-beta-third-party-db-s2i.json 模板已弃用,并在 JBoss EAP 7.4.0.GA 中移除。

旧安全子系统

现在已弃用 org.jboss.as.security 扩展及其支持的旧 security 子系统。将您的安全实施从 security 子系统迁移到 elytron 子系统。

org.wildfly.extension.picketlink 扩展,以及这个扩展支持的 picketlink-federationpicketlink-identity-management 子系统现在已被弃用。将单点登录实施迁移到红帽单点登录(Red Hat Single Sign-On)。

PicketBox

基于 PicketBox 的安全密码库(包括使用旧 security 子系统和 core-service=vault 内核管理资源的访问权限)现已在此版本中弃用。

受管域对旧版 JBoss EAP 的支持

对在 JBoss EAP 7.4 受管域中运行 JBoss EAP 7.3 和更早版本的主机的支持已弃用。将受管域中的主机迁移到 JBoss EAP 7.4。

使用 JBoss EAP 7.3 及更早版本中的命名空间的服务器配置文件

使用包含来自 JBoss EAP 7.3 及更早版本的命名空间的服务器配置文件(standalone.xml, host.xml, 和 domain.xml)在此发行版本中已弃用。更新您的服务器配置文件,以使用 JBoss EAP 7.4 命名空间。

JBoss EAP Server Side JavaScript 支持

以前,JBoss EAP Server Side JavaScript 支持作为技术预览提供。现在,它在此发行版本中已弃用。

Agroal 子系统

datasources-agroal 子系统已弃用。

Codehaus Jackson

目前不支持的 Codehaus Jackson 1.x 模块已在 JBoss EAP 7.4 中弃用。

application-security-domain 资源

ejb3undertow 子系统中的 application-security-domain 资源已弃用。

集群子系统

Cluster 子系统中的以下资源已弃用:

  • infinispan 子系统
/subsystem=infinispan/remote-cache-container=*/component=transaction
/subsystem=infinispan/remote-cache-container=*/near-cache=*
  • jgroups 子系统
/subsystem=jgroups/stack=*/protocol=S3_PING
/subsystem=jgroups/stack=*/protocol=GOOGLE_PING
SCRAM(Salted Challenge Response Authentication Mechanism)

以下 SCRAM 及其频道绑定变体已弃用:

  • SCRAM-SHA-512
  • SCRAM-SHA-384
Quickstarts

现有 Quickstarts 已被弃用,其视图可用于提供与 JBoss EAP 下一个主要版本相关的快速入门(可能包括一些现有启动)。

Hibernate ORM 5.1

Hibernate ORM 5.1 原生 API 字节码转换器自最初引入以来一直被弃用。

HornetQ 消息传递客户端

HornetQ 消息传递客户端已弃用。

第 4 章 已解决的问题

请参阅 解决 JBoss EAP 7.4 的问题,以查看针对此版本解决的关键问题列表。

另外,请注意以下几点:

  • 完成 Source-to-image 构建后,OpenShift 现在会清除源目录 (/tmp/src)。因此,构建的镜像应该会更小。

第 5 章 修复的 CVE

JBoss EAP 7.4 包括以下与安全相关的问题修复:

  • CVE-2020-14317: WildFly:在 JBoss EAP 中,进程标识号(PID)文件的竞争条件让本地用户终止任意进程。

第 6 章 已知问题

请参阅 JBoss EAP 7.4 的已知问题以查看此发行版本已知的问题列表。

6.1. JBoss EAP 7.4 的行为已更改

OPENSHIFT_DNS_PING_SERVICE_NAME 设置为空值会导致引导错误

不要将 OPENSHIFT_DNS_PING_SERVICE_NAME 设置为空值。发生引导错误并禁用集群。

不可预测的 Web 会话过期

在以前的版本中,JBoss EAP 错误地重新计算了一些 web 会话超时,这些会话没有按 web 应用程序配置文件(如 web.xmljboss-web.xmljboss-all.xml)中指定的过期。JBoss EAP 不再执行这种错误的计算,因此 Web 会话现在根据应用配置中指定的时间过期。

WebInjectionContainer中缓存 Bean 时,分布式 JSF 应用程序中的内存泄漏

JBoss EAP 集群成员资格更改(如启动或停止服务器)可能会导致与给定会话对应的事件在不同于上次处理这些事件的不同集群成员中恢复。特别是 org.jboss.as.web.common.WebInjectionContainer 缓存引用所有受管 Bean 及其引用,以便它可以调用 ManagedReference.release,这会导致内存泄漏。此问题会影响使用 JBoss EAP 高可用性(HA)服务器配置的分布式 Jakarta Server Faces(JSF)应用。如果其他集群成员处理该过期,对会话范围的 Bean 的引用可在相关的 HTTP 会话过期后保留。作为临时解决方案,请更改 distributable-web 子系统,如下例所示:

/subsystem=distributable-web/infinispan-session-management=default/affinity=local:add

使用 ibm-java-1.8 和 Bouncy Castle 时,java.lang.NullPointerException 错误

如果您在 JBoss EAP 上直接或间接使用 IBM JDK 1.8 的 Bouncy Castle 供应商,则可能会遇到以下错误:

Caused by: java.lang.NullPointerException
	at org.bouncycastle.jcajce.provider.asymmetric.rsa.BCRSAPrivateKey.getAlgorithm(BCRSAPrivateKey.java:79)
	at com.ibm.crypto.provider.bf.supportsParameter(Unknown Source)
	at javax.crypto.Cipher.a(Unknown Source)
	at javax.crypto.Cipher.init(Unknown Source)
	at javax.crypto.Cipher.init(Unknown Source)
	at org.bouncycastle.operator.jcajce.JceAsymmetricKeyUnwrapper.generateUnwrappedKey(JceAsymmetricKeyUnwrapper.java:109)
	at org.bouncycastle.cms.jcajce.JceKeyTransRecipient.extractSecretKey(JceKeyTransRecipient.java:208)
	at org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient.getRecipientOperator(JceKeyTransEnvelopedRecipient.java:26)
	at org.bouncycastle.cms.KeyTransRecipientInformation.getRecipientOperator(KeyTransRecipientInformation.java:48)
	at org.bouncycastle.cms.RecipientInformation.getContentStream(RecipientInformation.java:169)
	at org.bouncycastle.cms.RecipientInformation.getContent(RecipientInformation.java:150)
	at org.jboss.resteasy.security.smime.EnvelopedInputImpl.getEntity(EnvelopedInputImpl.java:168)
	... 76 more

要临时解决这个问题,请修改您的 JBoss EAP module.xml 结构,使其与 WFLY-14688 diff 类似,您可以在其他资源部分中访问该结构。

其他资源





更新于 2024-02-08

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.