7.4.0 发行注记
Red Hat JBoss Enterprise Application Platform 7.4
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。由于这一努力的精力,这些更改将在即将发布的版本中逐渐实施。有关让我们的语言更加包含的更多详情,请参阅我们的CTO Chris Wright 信息。
提供有关 JBoss EAP 文档的反馈
要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。
流程
- 单击以下链接 以创建 ticket。
- 请包含 文档 URL、章节编号 并描述问题。
- 在 Summary 中输入问题的简短描述。
- 在 Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
- 点 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. 安全性
支持在凭证存储中自动更新凭证
现在,当您配置指定了 store
和 clear-text
属性的凭证引用时,Elytron 会自动将凭证添加到之前定义的凭证存储中。
在这个版本中,在从 credential-reference
引用它之前,不需要将凭证添加到现有凭证存储中。此自动化流程减少了您在不同子系统中引用新凭据所需的步骤。
Elytron 中新角色映射器 regex-role-mapper
Elytron 现在提供了一个新的角色映射器 regex-role-mapper
,以定义基于正则表达式(regex)的安全角色映射。
您可以使用 regex-role-mapper
将角色列表转换为更简单的角色。例如:
-
*-admin
到admin
-
*-user
到user
使用 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-
属性注册 OpenSSL 供应商,为 TLS 启用 OpenSSL 供应商。
providers
您可以通过在 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.xml
或META-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.bat
和 common.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
配置以下属性:
属性 | 描述 |
---|---|
| 指定远程客户端的 IP 地址或要匹配的远程客户端 IP 地址的正则表达式。 |
| 指定远程客户端的 IP 地址。 |
|
如果远程客户端的 IP 地址与 |
为受管执行器服务公开运行时统计信息
在之前的 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.xml
或 jboss-permissions.xml
文件。无法使用属性替换在 permissions.xml
和 jboss-permissions.xml
文件中迁移文件权限。
现在,您可以对 permissions.xml
和 jboss-permissions.xml
文件使用属性替换。
使用 ee
子系统中的 jboss-descriptor-property-replacement
和 spec-descriptor-property-replacement
属性可以启用或禁用 jboss-permissions.xml
和 permissions.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
配置以下属性:
属性 | 描述 |
---|---|
| 指定远程客户端的 IP 地址或要匹配的远程客户端 IP 地址的正则表达式。 |
| 指定远程客户端的 IP 地址。 |
|
如果远程客户端的 IP 地址与 |
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
参数收集参数的旧方法。
配置 SameSite cookie 属性
现在,您可以使用 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_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<PATH> |
<PATH> 是包含自定义 feature-packs 的 Maven 本地存储库目录的绝对路径。目录默认为 |
GALLEON_PROVISION_FEATURE_PACKS=<LIST_OF_GALLEON_FEATURE_PACKS> | <LIST_OF_GALLEON_FEATURE_PACKS> 是 Maven 协调标识的自定义 Galleon 功能包的逗号分隔列表。列出的功能包必须与构建器镜像中存在的 JBoss EAP 7.4 服务器的版本兼容。
您可以使用 |
只读服务器配置目录
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 插件冲突。
其他资源
-
有关如何下载 JBoss EAP 7.4 开发文件示例的信息,请转至 GitHub 网页上的
jboss-eap-quickstarts
目录中的kitchensink-jsp
子目录。 - 有关下载和安装与 JBoss EAP 7.4 兼容的最新版本 CRW 的更多信息,请参阅 CRW 安装指南中的安装 CodeReady Workspaces。
- 有关配置 CRW 的更多信息,请参阅 CRW 最终用户指南中的配置CodeReady Workspaces 2.9 工作区。
第 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.json
和 eap73-third-party-db-s2i.json
模板
eap74-beta-starter-s2i.json
和 eap74-beta-third-party-db-s2i.json
模板已弃用,并在 JBoss EAP 7.4.0.GA 中移除。
旧安全子系统
现在已弃用 org.jboss.as.security
扩展及其支持的旧 security
子系统。将您的安全实施从 security
子系统迁移到 elytron
子系统。
PicketLink
org.wildfly.extension.picketlink
扩展,以及这个扩展支持的 picketlink-federation
和 picketlink-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
资源
ejb3
和 undertow
子系统中的 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.xml
、jboss-web.xml
或 jboss-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 类似,您可以在其他资源部分中访问该结构。
其他资源
- 有关此问题的更多信息,请参阅 WFLY-14688 diff。
- 有关 Bouncy Castle 加密 API 的更多信息,请参阅 bouncycastle.org。
更新于 2024-02-08