Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

7.1.0 发行注记

Red Hat JBoss Enterprise Application Platform 7.1

适用于 Red Hat JBoss Enterprise Application Platform 7.1

Red Hat Customer Content Services

摘要

这些发行注记包含有关 Red Hat JBoss Enterprise Application Platform 7.1 的重要信息。

第 1 章 关于 Red Hat JBoss Enterprise Application Platform 7.1

Red Hat JBoss Enterprise Application Platform 7.1(JBoss EAP)是一个构建在开放标准上并和 Java Enterprise Edition 7 规格兼容的中间件平台。

JBoss EAP 使用了模块化结构,允许在有需要时才启用服务,从而提高了启动速度。

管理控制台和管理命令行界面(Command-line Interface,CLI)使您不需要再编辑 XML 配置文件并增添了使用脚本和自动化任务的能力。

JBoss EAP 提供了两种操作模式:独立服务器和受管域。独立服务器操作模式代表 JBoss EAP 作为单个服务器实例运行。受管域模式则允许通过单个控制点管理多个 JBoss EAP 实例。

此外,JBoss EAP 包含了 API 和开放框架以用于快速开发安全和可扩充的 Java EE 应用程序。

第 2 章 支持的配置

以下是 JBoss EAP 7.1 最新支持的配置。

  • 操作系统

    • x86_64 架构上的 Windows Server 2016

      • 这包括在 Windows Server 2016 虚拟机上的 Microsoft Azure 中使用 JBoss EAP。
  • 数据库

    以下数据库已经过认证,现在完全受支持:

    • SQL Server 2016
    • Sybase 16.0
    • MariaDB Galera Cluster 10.1
  • 外部 JMS 提供程序

    • Red Hat JBoss AMQ 7.0
    • IBM WebSphere MQ 8
  • LDAP 服务

    • Red Hat Directory Server 10.1
    • Microsoft Active Directory 2016
  • 原生连接器

    • Microsoft IIS 10
  • Red Hat JBoss Developer Studio

    • JBoss EAP 7.1 已经过认证,可与 Red Hat JBoss Developer Studio 11 配合使用。

关于 JBoss EAP 7.1 完全支持的配置的详细信息,请参考 Red Hat JBoss Enterprise Application Platform (EAP) 7 支持的配置网页。

第 3 章 新功能及增强

3.1. 安全性和 Elytron

Elytron 和 elytron 子系统

elytron 子系统基于 WildFly Elytron 项目,是 JBoss EAP 7.1 中的一个新子系统。Elytron 是一个用于统一整个应用服务器安全性的安全框架。elytron 子系统提供单点配置以保护应用程序和管理界面。它还提供了一组 API 和 SPI,供创建功能和集成的自定义实现。了解有关各种 Elytron 组件的更多信息,请参考《安全架构指南》中的核心概念和组件章节。

旧式 security 子系统和旧式核心管理身份验证仍然存在于 JBoss EAP 7.1 中并会默认使用。有关配置 elytron 子系统的信息,请参考如何配置服务器安全性 中的 Elytron 子系统章节。

elytron 子系统的重要功能包括:

  • 更强的 HTTP 和 SASL 身份验证机制。
  • 改进的架构允许安全身份信息跨安全域进行传递并透明地执行转换,从而可用于授权。执行转换需要使用可配置的角色解码器、角色映射器和权限映射器。
  • 一个 SSL/TLS 配置集中点,包括密码套件和协议。
  • SSL/TLS 优化功能,比如即时安全身份构建和紧密联系授权,可用于建立 SSL/TLS 连接。这使得权限检查可以在收到第一个请求之前进行。即时安全身份构建避免了根据每个请求构建安全身份。
  • 安全凭证库替代了旧式的密码库实现。安全凭证库除了存储加密字符串之外,还可以存储其他多种加密凭证类型。有关凭证库的更多信息,请参考如何配置服务器安全性中的凭证库章节。除了 elytron 子系统之外,新的密码库和现有的旧式密码库仍可用于其他子系统。

凭证库

您可以在 JBoss EAP 7.1 的 elytron 子系统中配置凭证库。凭证库可支持凭证的安全存储和使用,而且与使用旧式密码库相比,有多种好处。凭证库中存储的凭证可供其他 JBoss EAP 子系统安全地引用。这样可以防止密码等凭证以明文形式存储。更多信息请参考《如何配置服务器安全性》中的凭证库

映射经过身份验证的管理用户身份

当使用 elytron 子系统来保护管理界面安全时,可以向管理界面提供安全域,以便对经过身份验证的用户执行身份映射。这样可使经过身份验证的用户在登录管理界面时能够以适当身份显示。更多信息请参考《如何配置服务器安全性》中的映射经过身份验证的管理用户身份

自动为应用程序创建自签名证书

JBoss EAP 7.1 提供了为旧式安全区的开发目的自动生成自签名证书的功能。更多信息请参考《如何配置服务器安全性》中的自动为应用程序创建自签名证书

安全区缓存

Elytron 提供了 caching-realm,允许对安全区中的凭证查询结果进行缓存。例如,可以使用此功能为来自 LDAP 或数据库的凭证配置缓存,以提高频繁查询的用户的性能。更多信息请参考《如何配置身份管理》中的设置安全区缓存

容器管理的单点登录

您可以配置 JBoss EAP 7.1,以对采用 Elytron FORM 身份验证方法的应用程序使用容器管理的单点登录。这样,用户只需进行一次身份验证,即可访问由 FORM 身份验证方法提供安全保护的其他资源,而无需重新验证。更多信息请参考《如何配置身份管理》中的配置应用程序以使用容器管理的单点登录

传播远程调用的安全身份

JBoss EAP 7.1 推出的这一功能可轻松配置服务器和应用程序,以从客户端向服务器传播安全身份,从而实现远程调用。另外还可以配置服务器组件,使其在给定用户的安全身份范围内运行。

更多信息请参考 JBoss EAP 的《如何配置服务器安全性》中的传播远程调用的安全身份

WildFly Elytron 工具

JBoss EAP 7.1 包含 WildFly Elytron 工具,允许创建和修改凭证库而无需运行 JBoss EAP 服务器。通过 vault 选项,还可以使用该工具将密码库转换为凭证库。

如需了解有关如何使用 WildFly Elytron 工具的信息,请参考如何配置服务器安全性中的使用 WildFly Elytron 工具离线创建和修改凭证库

用于在适用的子系统和管理界面中启用 Elytron 的脚本

提供了一个脚本,可以在适用的子系统和管理界面中启用 Elytron 框架。该脚本为 enable-elytron.cli,可在 EAP_HOME/docs/examples/ 目录中找到。该脚本的使用是可选的;Elytron 也可以按需要在各个子系统上启用。更多信息请参考《安全架构指南》中的 Red Hat JBoss Enterprise Application Platform 7.1 如何处理开箱即用安全性

使用管理控制台配置 Elytron 子系统

您可以使用管理控制台配置 elytron 子系统,配置路径为:ConfigurationSubsystemsSecurity - Elytron。更多信息请参考《如何配置服务器安全性》中的 Elytron 子系统

Elytron 与 JBoss EAP 子系统的集成

在 JBoss EAP 7.1 中,可以使用 Elytron 为以下 JBoss EAP 子系统提供多方面的安全保护:

batch-jberet
您可以配置 batch-jberet 子系统以使用 Elytron 安全域来运行批任务。更多信息请参考《配置指南》中的配置批任务的安全性
datasources
您可以使用凭证库或 Elytron 安全域在数据源定义中提供身份验证信息。更多信息请参考《配置指南》中的数据源安全性
ejb3
您可以在 ejb3 子系统中创建 Elytron 安全域映射,供部署引用。更多信息请参考《开发 EJB 应用程序》中的 Elytron 与 EJB 子系统的集成
iiop-openjdk
您可以配置 iiop-openjdk 子系统以使用 SSL/TLS 保护客户端和服务器之间的通信。更多信息请参考《配置指南》中的配置 IIOP 将 SSL/TLS 用于 Elytron 子系统
jca
您可以使用 elytron-enabled 属性为 WorkManager 启用 Elytron 安全性。更多信息请参考《配置指南》中的配置 JCA 子系统
jgroups
您可以配置 SYM_ENCRYPTASYM_ENCRYPT 协议来引用在 elytron 子系统中定义的密钥库或凭证库。也可以配置 AUTH 协议来引用由 elytron 管理的凭证库和密钥库。更多信息请参考《配置指南》中的保护集群
mail
您可以使用凭证库为 mail 子系统提供密码。更多信息请参考《配置指南》中的将凭证库用于密码
messaging-activemq
您可以使用 Elytron 安全性保护 messaging-activemq 子系统。更多信息请参考《配置消息》中的使用 Elytron 子系统 章节。
modcluster
您可以使用 Elytron 客户端 ssl-context 通过 SSL/TLS 与负载均衡器通信。更多信息请参考《如何配置服务器安全性》中的 Elytron 与 ModCluster 子系统的集成
remoting
您可以在 remoting 子系统中配置入站连接和出站连接,以引用在 elytron 子系统中定义的身份验证上下文、SASL 身份验证工厂和 SSL 上下文。更多信息请参考《如何配置服务器安全性》中的 Elytron 与 Remoting 子系统的集成
resource-adapters
您可以使用 Elytron 保护到资源适配器的连接。您可以启用安全性流入,以便在提交要由 WorkManager 执行的工作时建立安全凭证。更多信息请参考《配置指南》中的配置资源适配器使用 Elytron 子系统
undertow
您可以使用 elytron 子系统来配置 SSL/TLS 和应用程序身份验证。更多信息请参考《如何配置服务器安全性》中的使用 SSL/TLS,以及《如何配置身份管理》中的配置 Web 应用程序以使用 Elytron 或旧式安全性进行身份验证

3.2. 服务器管理

以暂停状态启动服务器

在启动过程中,JBoss EAP 7.1 服务器会停留在暂停状态,直至所有服务都已启动。在这种状态下,服务器不接受任何请求。一旦所有需要的服务都已启动,服务器将进入正常运行状态,开始接受请求。

也可以以暂停状态启动服务器并保持暂停状态,直至调用 resume 操作为止。要以暂停状态启动服务器,将相应操作的 start-mode 参数设置为 suspend

  • 对于独立服务器,将 --start-mode=suspend 参数传递到 standalone.sh 脚本:

    示例:以暂停状态启动独立服务器

    $ EAP_HOME/bin/standalone.sh --start-mode=suspend

  • 在受管域中,将 start-mode=suspend 参数传递到 start 管理 CLI 操作:

    示例:以暂停状态启动受管域服务器

    /host=HOST_NAME/server-config=SERVER_NAME:start(start-mode=suspend)

使用核心管理子系统监控服务器生命周期事件

在 JBoss EAP 7.1 中,您可以向 JBoss EAP core-management 子系统注册侦听程序,以监控服务器生命周期事件。更多信息请参考《配置指南》中的使用核心管理子系统监控服务器生命周期事件

使用 JMX 通知监控服务器生命周期事件

在 JBoss EAP 7.1 中,您可以注册 JMX 通知侦听程序来监控服务器生命周期事件。更多信息请参考《配置指南》中的使用 JMX 通知监控服务器生命周期事件

通过管理 CLI 跟踪和查看配置更改

在受管域中,在主机级别针对主机和服务器相关修改跟踪配置更改。配置更改对主机控制器启用时,就会对其所有的受管服务器启用。对跟踪配置更改进行配置的功能已经移至新的 core-management 子系统。更多信息请参考《配置指南》中的查看配置更改

监控工作节点统计

您可以使用管理 CLI 查看工作节点的运行时统计。这会显示连接计数、线程计数和队列大小等工作节点统计。

以下命令显示默认工作节点的运行时统计:

/subsystem=io/worker=default:read-resource(include-runtime=true,recursive=true)

更多信息请参考《性能微调指南》中的配置工作节点

改进了从主机控制器的资源监控

在 JBoss EAP 7.1 中,配置为从属的主机控制器可以忽略不需要的域范围内配置中的资源。如果资源没有与从主机控制器所管理的服务器相关联,则可能是无关资源。

您可以忽略不再使用的配置,方法是在 JBoss EAP 7.0 主机控制器与远程域控制器的连接配置中,将 ignore-unused-configuration 属性设置为 true。默认情况下,ignore-unused-configuration 属性没有定义。

更多信息及配置示例,请参考《配置指南》中的配置 JBoss EAP 7.1 域控制器来管理 JBoss EAP 7.0 实例

您也可以使用 --backup 命令行标志,同时将 ignore-unused-configuration 设置为 true,这可以在域控制器不可用的情况下,让从主机控制器使用域配置的备份副本进行启动。从主机控制器不需要使用完整的 domain.xml 来实现这一操作。

使用缓存配置启动的主机控制器自动重新连接到域控制器

在 JBoss EAP 7.1 中,因为域控制器不可访问而使用缓存配置启动的主机控制器在域控制器变为可用之后,将会自动地重新连接到域控制器。

设置服务器区域设置

您可以使用 org.jboss.logging.locale 属性来覆盖使用 JBoss Logging 记录的消息的区域设置,其中包括来自 JBoss EAP 及其附属软件的任何消息。

更多信息请参考《配置指南》中的使用 org.jboss.logging.locale 属性设置服务器区域设置

新属性:parse-group-name-from-dn

在 JBoss EAP 7.1 中,parse-group-name-from-dn 属性现在位于 /core-service=management/security-realm=realm/authorization=ldap/group-search=principal-to-group。提供该属性是为了替代 org.jboss.as.domain.management.security.parseGroupNameFromLdapDN 系统属性。

更多信息请参考《迁移指南》中的启用 LDAP 安全区以从 DN 解析角色

使用 JBoss Operations Network 管理 JBoss EAP

您可以使用 Red Hat JBoss Operations Network 监控 JBoss EAP 7.1 服务器并管理其配置。

重要

JBoss Operations Network 不支持配置新的 JBoss EAP 7.1 elytron 子系统。其监控支持仅限于 JBoss Operations Network JBoss EAP 插件(可用于 JBoss EAP 6.4)的功能,另外增加了 JBoss EAP undertowiiop-openjdkiomessaging-activemq 子系统。

3.3. 管理 CLI

显示和保存附件

在 JBoss EAP 7.1 中,可以使用 attachment 命令显示或保存附加流的内容。这适用于可将内容显示为流的管理资源。

使用以下管理 CLI 命令可显示附件的内容:

attachment display --operation=/subsystem=logging/log-file=server.log:read-attribute(name=stream)

使用以下管理 CLI 命令可将附件内容保存到文件中:

attachment save --operation=/subsystem=logging/log-file=server.log:read-attribute(name=stream) --file=test.log
注意

如果未提供文件名,则将 EAP_HOME/bin/STREAM_UUID 作为文件路径。

更多信息请参考《管理 CLI 指南》中的显示附件内容保存附件内容

将文件附加到管理操作

在 JBoss EAP 7.1 中,可以使用管理 CLI 将文件附加到管理操作。您可以使用 add-content 操作将内容附加到已展开的现有部署,也可以使用 remove-content 操作删除内容。例如:

/deployment=test.war:add-content(content=[{input-stream-index=/path/to/a.txt,target-path=a.txt}])

您可以使用 browse-content 操作浏览部署内容。

设置命令超时时间

JBoss EAP 7.1 允许设置等待管理 CLI 命令完成的最长时间(秒)。值为 0 表示没有超时时间。默认没有超时时间。例如:

command-timeout set 30

在非交互模式的输出中包括提示符和命令

在 JBoss EAP 7.1 中,使用 --echo-command 参数可将提示符和命令与非交互模式下执行的命令的输出结果一起显示。这便于将输出与所执行的命令对应起来,从而有助于排除故障。

$ EAP_HOME/bin/jboss-cli.sh --connect --file=/path/to/cli_commands.txt --echo-command

命令和输出会在执行过程中显示出来。

[standalone@localhost:9990 /] :read-attribute(name=running-mode)
{
    "outcome" => "success",
    "result" => "NORMAL"
}
[standalone@localhost:9990 /] ls /deployment
helloworld.war

指定自定义模块的导出依赖项

JBoss EAP 7.1 提供了 --export-dependencies 参数,可指定模块的导出依赖项。例如:

module add --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --export-dependencies=javax.api,javax.transaction.api
重要

使用 module 管理 CLI 命令来添加和删除模块只作为技术预览提供。此命令不适合用于受管域或远程连接到管理 CLI 的情况。模块应该在生产环境中手动进行添加和删除。更多信息请参考《JBoss EAP 配置指南》中的手动创建自定义模块手动删除自定义模块章节。

设置模块创建过程中的备选模块目录

如果已经定义了外部的 JBoss EAP 模块目录用于替代默认的 EAP_HOME/modules/ 目录,可以使用 --module-root-dir 参数来指定要在模块创建过程中使用的目录。

module add --module-root-dir=/path/to/my-external-modules/ --name=com.mysql --resources=/path/to/mysql-connector-java-5.1.36-bin.jar --dependencies=javax.api,javax.transaction.api
重要

使用 module 管理 CLI 命令来添加和删除模块只作为技术预览提供。此命令不适合用于受管域或远程连接到管理 CLI 的情况。模块应该在生产环境中手动进行添加和删除。更多信息请参考《JBoss EAP 配置指南》中的手动创建自定义模块手动删除自定义模块章节。

使用 IBM JDK 启动管理 CLI 会话

jboss-cli 脚本可将 com.ibm.jsse2.overrideDefaultTLS 属性设置为 true。此设置在使用 IBM JDK 的情况下非常重要,可防止在使用由 Elytron 配置的 SSL 时出现身份验证问题。如果在使用 IBM JDK 并使用其他方法来启动 CLI 会话(例如,使用 EAP_HOME/bin/client/jboss-cli-client.jar 中提供的类以编程方式来启动),则务必要设置此属性。

3.4. 管理控制台

应用程序部署更新

JBoss EAP 7.1 提供了更新的用户界面用于管理应用程序部署。在管理控制台的 Deployments 选项卡中现在提供以下部署功能:

  • 使用 Explode 下拉选项可解开被禁用的部署。
  • 使用 Browse Content 下拉选项可浏览部署中的文件。不支持导航功能。
  • 显示详细信息,说明应用程序是压缩档案还是已展开的部署。

事务监控支持功能

JBoss EAP 7.1 在管理控制台中提供了增强的 transactions 子系统指标,以及用于 JDBC 和 JMS 事务的指标。

查看和管理 Messaging 的准备就绪事务

您可以使用管理控制台来查看、提交或回滚 messaging-activemq子系统的准备就绪事务。更多信息请参考《配置消息》中的使用管理控制台管理准备就绪事务

文本字段提示

当在管理控制台的某些文本字段中键入时,来自配置中其他位置的值可能作为提示信息出现。

添加 JMS 网桥

您可以使用管理控制台添加 JMS 网桥,操作路径为:ConfigurationSubsystemsMessaging - ActiveMQJMS BridgeViewAdd。提供必要信息并点击 Save

跟踪和查看配置更改

要从管理控制台中启用跟踪配置更改的功能,可访问 Runtime 选项卡,选择独立服务器或受管域主机,再从下拉列表中选择 Configuration Changes。点击 Enable 按钮并提供最大历史记录值。

此页上的表中随后会列出所做的每项配置更改以及日期、来源、结果和操作详细信息。

配置过滤器

您可以使用管理控制台配置 Undertow 过滤器,操作路径为:ConfigurationSubsystemsWeb/HTTP - UndertowFiltersView

管理批任务

在 JBoss EAP 7.1 中,可以从管理控制台来管理批任务。为此,可访问 Runtime 选项卡,选择服务器,然后依次选择 SubsystemsBatchView。打开 Jobs 选项卡,即可按需启动、停止或重启任务。

测试数据源连接

在管理控制台中使用 Create Datasource 向导时,可以选择在创建数据源之前先测试其连接情况。在向导的 Test Connection 屏幕上点击 Test Connection 按钮。

使用数据源模板

使用管理控制台创建数据源时,Create Datasource 向导会提供模板,其中包含所支持数据库的默认值。这是 JBoss EAP 7.1 最新支持的功能。

子系统支持

在 JBoss EAP 7.1 中,现在支持使用管理控制台配置以下子系统:

  • BeanValidation
  • IO
  • Jaxrs
  • Jdr
  • Jsf
  • Jsr77
  • Naming
  • Pojo
  • Remoting
  • RequestController
  • Sar
  • Security - Elytron
  • 单点登录
  • Weld

3.5. Web Server

HTTP/2 支持

JBoss EAP 7.1 允许在所有支持的操作系统上使用安全的 HTTP/2,只有 HP-UX 例外。JBoss EAP 7.1 支持以两种方式来启用 HTTP/2:

  • 使用 JBoss EAP 7.1 内置的 ALPN 支持功能,其中使用了反射 API。这种方法现成可用,但仅限于使用 OpenJDK 和 Oracle JDK。
  • 使用新的 JBoss Core Services OpenSSL 所提供的 ALPN 支持功能,这种方法适用于所有支持的操作系统,但 HP-UX 例外。

3.6. 日志

改进了对无效服务器配置文件引起的引导错误进行报告的功能

在 JBoss EAP 7.1 之前,解析无效服务器配置文件时发生的引导错误只提供很少的反馈信息,难以排除问题。JBoss EAP 7.1 采用了 XSD 分析,在发生 XML 解析错误时可生成包含更多信息的错误消息。现在可以显示发生错误的位置,提供关于验证错误的反馈,并尽可能通过 XSD 提取并显示支持文档来描述问题。这种增强的 XML 配置验证不包括部署的部署描述符。

服务器日志包括补丁信息

在启动过程中现在会将补丁相关信息记录在 server.log 文件中。这些信息在调试解决问题时很有用。

3.7. 部署

管理展开的部署

在 JBoss EAP 7.1 中,现在可创建展开的受管部署,并使用部署管理操作来操控其内容。

更多信息请参考《配置指南》中的管理展开的部署

支持浏览内容存储库

在 JBoss EAP 7.1 中,可以使用部署管理操作来查看受管部署的内容。更多信息请参考《配置指南》中的查看部署内容

取消部署所有部署

在 JBoss EAP 7.1 中,现在可在管理 CLI 中通过使用通配符 (*) 来取消部署所有部署。例如:

undeploy *

重新部署所有禁用的部署

在 JBoss EAP 7.1 中,现在可在管理 CLI 中通过使用通配符 (*) 来部署所有禁用的部署。例如:

deploy --name=*

3.8. 类加载

在 module.xml 文件中使用资源的绝对路径

在 JBoss EAP 7.1 中,现在支持在模块的 module.xml 文件的 resource-root 路径元素中使用绝对路径。这样,无需将资源库移到 EAP_HOME/modules/ 目录中即可访问。

3.9. Naming

动态更改 JNDI 绑定

在 JBoss EAP 7.1 中,可以使用 rebind 操作动态更新 JNDI 绑定,无需重新加载或重启服务。但是,这不适用于外部上下文绑定,因为更改这些绑定需要重启服务。

更多信息请参考《配置指南》中的动态更改 JNDI 绑定章节。

3.10. 事务

正常关闭事务

服务器一旦暂停,将不再接受新的请求,但仍然允许正在处理中的事务和请求继续执行,直至完成或超时。这同样适用于与 XTS 事务相关的 web 服务请求。更多信息请参考《配置指南》中的正常暂停和关闭 JBoss EAP

增强的事务监控

JBoss EAP 7.1 为 datasourcestransactionsmessaging-activemq 子系统中的事务资源提供了增强的统计。

有关如何查看可用统计的信息,请参考《配置指南》中的数据源统计查看事务统计,以及《配置消息》中的监控消息统计

删除事务时的 Forget 调用

当对事务日志使用 delete 操作时,现在会触发 forget 调用,从而正确地清除 XA 资源供应商日志。有关更多详细信息以及如何配置 forget 调用行为,请参考《配置指南》中的删除事务

3.11. JCA

支持分布式 WorkManager

JBoss EAP 7.1 支持使用分布式 WorkManager 在另一 WorkManager 实例上重新调度工作执行。更多信息请参考《配置指南》中的分布式 WorkManager章节。

3.12. 数据源

清空数据源连接

您可以使用管理 CLI 或管理控制台清空数据源连接。相关详细信息请参考《配置指南》中的清空数据源连接章节。

禁用登记跟踪的记录

在 JBoss EAP 7.1 中,默认将数据源的 enlistment-trace 属性设置为 false。您可以将 enlistment-trace 属性设置为 true 来启用登记跟踪的记录。

警告

启用登记跟踪会更便于跟踪事务登记过程中出现的错误,但会影响性能。

3.13. Resource Adapters

配置通用 JMS 资源适配器

JBoss EAP 7.1 允许配置通用 JMS 资源适配器,与 JMS 提供程序配合使用。

清空资源适配器连接

您可以使用管理 CLI 清空资源适配器连接。相关详细信息请参考《配置指南》中的清空资源适配器连接章节。

禁用登记跟踪的记录

在 JBoss EAP 7.1 中,默认将资源适配器的 enlistment-trace 属性设置为 false。您可以将 enlistment-trace 属性设置为 true 来启用登记跟踪的记录。

警告

启用登记跟踪会更便于跟踪事务登记过程中出现的错误,但会影响性能。

3.14. EJB

集群单点登录 MDB 支持

JBoss EAP 7.1 现在支持使用集群单点登录 MDB。当一个 MDB 被确定为集群单点登录 MDB 并部署在集群中时,它将一次只在一个节点上保持激活。当这个服务器节点发生故障或关闭时,集群单点登录 MDB 将在另一个节点上激活并开始使用该节点上的消息。

更多信息请参考《开发 EJB 应用程序》中的集群单点登录 MDB

重新平衡所有入站 MDB 连接

在 JBoss EAP 7.0 中,您可以对 MDB 使用 rebalanceConnections 激活配置属性,以便在底层 Artemis 集群拓扑发生变化时重新平衡所有入站 MDB 连接。

在 JBoss EAP 7.1 中,现在可以使用 messaging-activemq 子系统中 pooled-connection-factory 配置的 rebalance-connections 属性来设置这种行为。

旧式 EJB 客户端兼容性

JBoss EAP 7.1 带有两种 EJB 客户端:

EJB 客户端
新的 EJB 客户端在很大程度上向后兼容于 JBoss EAP 7.0 的 EJB 客户端,但不是完全兼容。此 EJB 客户端支持动态身份切换并增强了远程处理,允许在一个连接上使用多种身份,无需为每种身份建立新的连接。
旧式 EJB 客户端

旧式 EJB 客户端可提供完全的二进制向后兼容性。此旧式 EJB 客户端可与最初使用 JBoss EAP 7.0 EJB 客户端编译的客户端应用程序在一起运行。在 JBoss EAP 7.0 的 EJB 客户端中存在的所有 API 也都存在于 JBoss EAP 7.1 的旧式 EJB 客户端中。

更多信息请参考《开发 EJB 应用程序》中的旧式 EJB 客户端兼容性

EJB 客户端代码简化

在 JBoss EAP 7.1 中,当调用 EJB 服务器端集群组件时,可简化 EJB 客户端代码。

更多信息请参考《开发 EJB 应用程序》中的EJB 客户端代码简化

配置 EJB 客户端地址

在 JBoss EAP 7.1 中,可以将 EJB 客户端的套接字绑定到某个地址和端口。然后,目标 EJB 就可以读取调用它的远程客户端的源地址和端口。

更多信息请参考《开发 EJB 应用程序》中的配置 EJB 客户端地址

jboss-ejb-client 依赖项单个 artifactID

包含 jboss-ejb-client 依赖项,使用 wildfly-ejb-client-bom 管理其的版本,这包括 EJB 客户端所需的全部依赖项。

在先前版本的 JBoss EAP 中,必须将依赖项手动包含在 pom.xml 中,但在 JBoss EAP 7.1 无需这样做。

更多信息请参考《开发 EJB 应用程序》中的远程 EJB 客户端的项目依赖项

拦截器绑定中支持正则表达式

在 JBoss EAP 7.1 中,可以将 ejb3 子系统的 allow-ejb-name-regex 属性设置为 true,以允许在拦截器绑定中使用正则表达式。这样就可以将拦截器映射到与指定正则表达式相匹配的所有 bean。

更多信息请参考《开发 EJB 应用程序》中的配置容器拦截器

3.15. JSF

支持多个 JSF

JBoss EAP 7.1 完全支持多个 JSF。这允许用户将 JBoss EAP 提供的 JSF 实现替换为用户提供的 JSF 实现。另外还允许用户安装多个 JSF 实现并轻松地切换默认实现。

请注意,在提供并安装自己的 JSF 实现时可能出现以下问题:

Mojarra/MyFaces 2.1.x/2.0.x

JBoss EAP 7 是获得认证的 Java EE 7 实现。但是,如果您安装了 2.1 或更早版本的其他 JSF 实现,JBoss EAP 7 将不再符合 Java EE 7 规范。这些更早的版本遵循在 JSR-314 中定义的 JSF 2.0 规范,所以会缺少在 JSR-344 中定义的 JSF 2.2 规范的功能。

更多信息请参考《配置指南》中的JavaServer Faces 的多项目实现

3.16. Hibernate

升级到 Hibernate ORM 5.1

JBoss EAP 7.1 现在包含 Hibernate ORM 5.1。Hibernate ORM 5.1 发行版本包括多项性能改进和错误修复。它还推出了以下新功能和改进:

Hibernate ORM 5.1 功能
  • 在 Hibernate 查询语言 (HQL) 中,可以定义与实体的连接,而不只是映射关联。例如:

    select ...
    from FinancialRecord f
        left join User u
            on r.lastUpdateBy = u.username
  • 除了提供按标识符加载单个身份的功能之外,API 现在还支持按标识符加载相同类型的多个实体,方法是使用 Hibernate 原生 API 的 Session 接口。例如:

    // Load Users 1, 2 and 3 at one shot
    List<User> users = session.byMultipleIds(User.class).multiLoad( 1, 2, 3 );
  • 本发行版本改进了 CDI 集成,包括解决了当 Hibernate 过早尝试访问 CDI BeanManager 时会出现的问题。更多信息请参考 HHH-8706HHH-10477
  • 当定义 Envers 审计查询时,现在可以跨一对一关联和多对一关联进行引用。

升级到 Hibernate Validator 5.3.x

JBoss EAP 7.1 现在包含 Hibernate Validator 5.3.x。值得注意的重点内容包括:

  • 错误修复
  • 能够为约束违规添加动态有效负载
  • 使用新的编程 API 进行约束定义和声明
  • 内置约束消息的新转换功能

更多信息请参考《开发指南》中的 Hibernate Validator 5.3.x 的新功能

访问 Envers 查询中的关联属性

在 JBoss EAP 7.1 中,可以访问 Envers 查询中关联实体的属性。更多信息请参考《开发 Hibernate 应用程序》中的使用引用实体的属性遍历实体关联

定义延迟加载属性提取组

在 JBoss EAP 7.1 中,如果使用字节码增强的延迟加载,可以定义属性组,当访问组中的某一属性时将提取这组属性。更多信息请参考《开发 Hibernate 应用程序》中的延迟属性加载

3.17. 高可用性

新的负载均衡器配置集

JBoss EAP 7.1 包含一个经过预配置的新负载均衡器配置集,可允许服务器作为负载均衡器运行。该配置集的独立服务器配置文件为 standalone-load-balancer.xml,位于 EAP_HOME/standalone/configuration/ 目录。受管域的配置集为 load-balancer,在 EAP_HOME/domain/configuration/domain.xml 文件中定义。有关使用该配置集的信息,请参考《配置指南》中的使用 mod_cluster 配置 Undertow 作为负载均衡器

3.18. RESTEasy

显示 REST 端点的资源详细信息

在 JBoss EAP 7.1 中,可以在部署的 jaxrs 子系统上使用 read-resource 管理 CLI 操作来查看有关 RESTEasy 端点的详细信息。更多信息请参考《开发 Web 服务应用程序》中的查看 RESTEasy 端点

针对 Java 8 的 Jackson 模块支持

JBoss EAP 7.1 支持 Java 8 功能所需的 Jackson 模块。更多信息请参考《开发 Web 服务应用程序》中的针对 Java 8 的 Jackson 模块支持

JSON 过滤器支持

在 JBoss EAP 7.1 中,可以使用 @JsonFilter 为类加上注解,以便执行动态过滤。更多信息请参考《开发 Web 服务应用程序》中的RESTEasy Jackson2 中的 JSON 过滤器支持

记录 RESTEasy 提供程序和拦截器

RESTEasy 在 DEBUG 日志级别上记录使用过的提供程序和拦截器。更多信息请参考《开发 Web 服务应用程序》中的 记录 RESTEasy 提供程序和拦截器

3.19. 消息

JDBC 消息持久化存储库

在 JBoss EAP 7.1 中,可以使用 JDBC 实现消息持久化并将数据绑定到数据库,而不是默认基于文件的日志。

重要

JBoss EAP 7.1 当前仅支持 Oracle Database 12c 且不支持采用高可用性 (HA) 拓扑。

更多信息请参考《配置消息》中的利用 JDBC 数据库实现消息日志持久性章节。

使用系统属性设置客户端线程池大小

以下系统属性可用于设置客户端全局线程池和全局调度线程池的大小。

  • activemq.artemis.client.global.thread.pool.max.size
  • activemq.artemis.client.global.scheduled.thread.pool.core.size

更多信息请参考《配置消息》中的客户端线程管理章节。

使用集成的 ActiveMQ Artemis 资源适配器访问 AMQ 代理程序

您可以使用 JBoss EAP messaging-activemq 子系统中集成的 ActiveMQ Artemis 资源适配器来访问外部 Red Hat JBoss AMQ 7 代理程序。

更多信息请参考《配置消息》中的将集成的 Artemis 资源适配器用于远程连接

3.20. 客户端配置

新的客户端配置文件

JBoss EAP 7.1 引入了 wildfly-config.xml 配置文件,允许在一个配置文件中指定各种客户端配置,比如 EJB、Elytron 身份验证和远程处理等。

有关客户端和可使用 wildfly-config.xml 文件完成的配置类型的信息,请参考《开发指南》 中的使用 wildfly-config.xml 文件的客户端配置

3.21. JBoss Server Migration Tool

JBoss Server Migration Tool 可用

JBoss Server Migration Tool 现已在 JBoss EAP 7.1 中可用。该工具可帮助您将 JBoss EAP 6.4 或 7.0 的服务器配置迁移到 JBoss EAP 7.1 中。它能对独立服务器和受管域的配置进行转换。

有关使用 JBoss Server Migration Tool 的更多信息,请参考《JBoss EAP 迁移指南》中的使用 JBoss 服务器迁移工具来迁移服务器配置

3.22. 文档

《性能调优指南》可用

JBoss EAP 7.1 的《性能调优指南》现已可用。该指南针对常见 JBoss EAP 使用场景提供了优化建议,并说明了如何监控性能和诊断性能问题。

3.23. 图形化安装程序

图形化安装程序提供自定义 JSF 安装选项

在使用图形化安装程序安装 JBoss EAP 7.1 时,您可以安装自定义的 JSF 实现。为此,在安装向导的 Configure Runtime Environment 页面上,选择 Perform advanced configurationInstall JSF implementation 并点击 Next。然后在 JSF Setup 页面上提供所需的详细信息并完成其余安装步骤。

注意

JBoss EAP 7.1 安装程序支持安装 MyFaces v2.1.x/v2.2.x 和 Mojarra v2.1.x/v2.2.x。单独的 MyFaces 实现本身并不受支持。

3.24. Quickstarts

新的 Quickstart 可用:ha-singleton-deployment

ha-singleton-deployment quickstart 程序随 JBoss EAP 7.1 一起发行。这是一个完整的工作示例,演示了如何使用单点登录部署将服务包装在应用程序中成为集群单点登录。

新的 Quickstart 可用:messaging-clustering-singleton

messaging-clustering-singleton quickstart 程序随 JBoss EAP 7.1 一起发行。该 quickstart 演示了如何使用 ActiveMQ Artemis 和 MDB 单点登录配置来实现集群。

采用 Elytron 安全功能的 Quickstart 更新程序

以下是 JBoss EAP 7.1 全新提供的 quickstart 程序,演示了如何使用 Elytron 保护应用程序安全。

  • ejb-security-context-propagation
  • ejb-security-jaas
  • ejb-security-programmatic-auth
  • helloworld-mutual-ssl
  • helloworld-mutual-ssl-secured
  • helloworld-ssl

以下现有的 quickstart 程序已得到更新,采用了 Elytron 安全功能:

  • ejb-asynchronous
  • ejb-multi-server
  • ejb-remote
  • ejb-security
  • helloworld-jms
  • servlet-security
  • shopping-cart

第 4 章 技术预览(Technology Preview)

警告

以下配置和功能仅作为技术预览提供,不支持用于生产环境,且未来有可能出现重大变更。有关技术预览功能的支持范围,请参考红帽客户门户网站 上的这一说明

使用 HTTP/HTTPS 和 HTTP 负载均衡器调用 EJB 和 JNDI

使用 HTTP 协议执行 EJB 和 JNDI 调用时,请求会直接映射到 HTTP 请求,这是 JBoss EAP 7.1 中的一项技术预览功能。您可以通过 HTTP 负载均衡器来调用 EJB,方法是使用 EJB/命名客户端 API。更多信息请参考《开发 EJB 应用程序》中的通过 HTTP 的 EJB 调用

新式企业级 Web 应用程序可在 JVM 上运行服务器端 JavaScript

JBoss EAP 7.1 允许使用 JDK 8 Nashorn 的功能来编写服务器端 JavaScript,以便快速开发 REST 端点,用来引入 CDI bean,执行 JNDI 查询并调用 JPA 实体 bean。undertow 子系统提供的此功能仅作为技术预览。

Java 中的服务器发送事件 (SSE)

实现了 Java 中的服务器发送事件模型,作为技术预览功能提供给用户,可与移动客户端和富客户端配合使用。此功能仅提供服务器端的实现。

使用管理控制台配置安全管理器子系统

在 JBoss EAP 7.1 中,提供了从管理控制台中配置 security-manager 子系统的功能,但作为技术预览提供。

使用 Offliner 应用程序下载 Maven 存储库

JBoss EAP 7.1 提供了使用 Offliner 应用程序下载 Maven 仓库的功能,但作为供技术预览。更多信息请参考《开发指南》中的使用 Offliner 应用程序下载 JBoss EAP Maven 仓库

Elytron 功能

以下 Elytron 功能仅作为技术预览提供:

  • 使用 filesystem-realm,这是一种基于文件系统的简单安全领域定义。
  • 使用可修改的 custom-realm,这是一种自定义安全领域,其中实现了 org.wildfly.security.auth.server.ModifiableSecurityRealm
  • ldap-realmjdbc-realm 上执行身份操控操作。

管理 CLI 匹配正则表达式运算符

管理 CLI 的匹配正则表达式 (~=) 运算符 if-else 控制流仅作为技术预览提供。更多信息请参考《管理 CLI 指南》中的 使用 if-else 控制流

第 5 章 不受支持和已舍弃的功能

5.1. 不支持的功能

由于维护成本高、社区不感兴趣以及更好的替代方案的出现,我们取消了对一些技术的支持。JBoss EAP 7.1 不再支持下列功能。

注意

7.0.0 发行注记不支持的功能 部分所列出的不受支持的功能同样也适用于 JBoss EAP 7.1 发行版本,除非在本文档的新功能及增强部分又提到了这些功能。

Messaging (ActiveMQ Artemis)

JBoss EAP 7.1 不支持以下消息功能:

  • AMQP、STOMP、REST、MQTT 和 OpenWire 协议
  • 连接器/接受器的 Netty over HTTP 和 Netty Servlet 传输选项
  • OIO (Old Java IO) 连接器/接受器类型不再允许进行配置
  • Vert.x、AeroGear、Spring 和 Jolokia 集成
  • 动态队列创建
  • 链群集
  • 集群消息分组
  • 使用 JMX 的 ActiveMQ Artemis 管理
  • 正常关闭/缩减 Artemis 集群的节点
  • 使用 replication-colocated/shared-store-colocated 配置的并置 HA 拓扑

    注意

    但是,可以支持在《配置消息》中的并置备份服务器章节介绍的并置 HA 拓扑。

  • 对 MAPPED 日志类型使用消息
  • 避免网络隔离
  • 配置多个集群连接

Infinispan API

在 JBoss EAP 中,Infinispan 作为一个私有模块提供,它为 JBoss EAP 提供了缓存功能。Infinispan 不能被应用程序直接使用。

Jackson API

在 JBoss EAP 中不支持将 Jackson 1 库用于开发或生产。

注意

支持使用 Jackson 2 库。更多信息请参考红帽客户门户网站上的 JBoss EAP 是否支持使用 Jackson 库?

OAuth 用于 RESTEasy

不支持将 OAuth 用于 RESTEasy。

ElytronAuthenticator

不支持使用 ElytronAuthenticator 类传播安全身份。更多信息请参考《如何配置身份管理》中的使用 ElytronAuthenticator 传播身份

5.2. 已舍弃的功能

JBoss EAP 7.1 已舍弃了一些功能。这意味着不会再有对这些功能的改进,通常会在下一个主要版本发布时删除这些功能。

Red Hat 将基于标准支持条款继续提供全面的支持和程序错误修复。关于 Red Hat 支持政策的更多信息,请参考 Red Hat 客户门户网站上的文章:Red Hat JBoss 中间件产品更新和支持政策

关于已舍弃的功能的详情,请参考 Red Hat 客户门户网站上的 JBoss Enterprise Application Platform 组件详细信息

JBoss EAP 容器镜像

JBoss EAP 容器 registry.access.redhat.com/jboss-eap-7-tech-preview/eap70 的基本镜像是通过 Red Hat Docker Registry 分发的,该镜像将不针对 JBoss EAP 7.1 进行更新,并将从 JBoss EAP 7.1 发行版本中删除。

属性

注意

大多数情况下,弃用的属性不会在管理控制台中显示。

  • undertow 子系统中用于 HTTP 侦听器的以下属性已弃用:

    • enable-spdy
    • enabled
    • enabled-cipher-suites
    • enabled-protocols
    • security-realm
    • ssl-session-cache-size
    • ssl-session-timeout
    • verify-client
  • infinispan 子系统中的以下缓存属性已弃用:

    • queue-flush-interval
    • queue-size
  • iiop-openjdk 子系统中的以下属性已弃用:

    • add-component-via-interceptor
    • queue-flush-interval
  • remoting 子系统中 remote-outbound-connection 资源的以下属性已弃用:

    • protocol
    • security-realm
    • username

资源

  • 以下核心管理资源已弃用,因为现在由 Elytron 提供管理安全功能。

    • audit
    • ldap-connection
    • security-realm
  • remoting 子系统中的以下远程处理出站连接已经弃用:

    • local-outbound-connection
    • outbound-connection
  • infinispan 子系统中的以下持久化存储库类型已弃用:

    • binary-jdbc
    • mixed-jdbc

操作

  • jaxrs 子系统的以下管理操作已弃用:

    • show-resources

第 6 章 已解决的问题

参考JBoss EAP 7.1.0 已解决问题可查看本发行版本中已解决问题的列表,这些问题源自于客户案例。

第 7 章 已修复的 CVE

JBoss EAP 7.1 包含针对以下安全相关问题的修复程序:

  • CVE-2016-6311:当请求标头的主机字段未设置时,内部 IP 地址会在重定向时暴露
  • CVE-2016-2141:默认在 JGroups 消息回执中添加了授权检查信息
  • CVE-2016-5406:对于运行管理 API 1.8 或更早版本的旧式从节点,RBAC 配置会被转换器忽略
  • CVE-2016-4993:HTTP 标头注入/响应互相脱离
  • CVE-2015-0254:XXE 和 RCE(通过 JSTL XML 标记中的 XSL 扩展)
  • CVE-2016-7046:过长的 URL 代理请求导致 java.nio.BufferOverflowException 和 DoS
  • CVE-2016-8627:可能发生 EAP 资源缺乏 DOS 攻击(通过对服务器日志文件的 GET 请求)
  • CVE-2016-7061:域模式下在服务器级别可能出现敏感数据暴露
  • CVE-2016-8656:jboss 初始化脚本中对 server.log 执行不安全的 chown 操作可以提升权限
  • CVE-2016-9589:ParseState headerValuesCache 可能被利用来向堆内存填入垃圾信息
  • CVE-2017-2595:通过路径遍历读取任意文件
  • CVE-2016-9606:Resteasy:Yaml 解组有可能发生 RCE
  • CVE-2017-2666:HTTP 请求走私漏洞(由于 HTTP 请求中允许使用无效字符)
  • CVE-2017-2670:Websocket 未彻底关闭可能导致 IO 线程陷入死循环
  • CVE-2016-4978:JMSObjectMessage 反序列化一些疑似恶意对象时会导致远程代码执行
  • CVE-2017-7525:jackson-databind:ObjectMapper 的 readValue 方法存在反序列化漏洞
  • CVE-2017-2582:SAML 请求分析程序会使用系统属性替代特殊字符串
  • CVE-2014-9970:jasypt:密码哈希值对比可能受到定时攻击
  • CVE-2015-6644:bouncycastle:GCMBlockCipher 会泄露信息
  • CVE-2017-5645:log4j:套接字接收方存在反序列化漏洞
  • CVE-2017-7536:hibernate-validator:在安全管理器中运行时可提升权限
  • CVE-2017-12165:不当的空格分析导致有可能发生 HTTP 请求走私
  • CVE-2017-7559:当 Undertow 分析带有不常见空格的 http 标头时有可能发生 HTTP 请求走私
  • CVE-2016-7066:安装后可以在 bin/jboss-cli 上获得在任意位置执行的权限。系统的任何用户都可能危害或关闭正在运行的 JBoss EAP 实例
  • CVE-2017-12167:多个属性文件设置了错误的权限

第 8 章 已知问题

参考JBoss EAP 7.1.0 已知问题可查看本发行版本中已知问题的列表。

此外,需要注意以下问题:

  • jboss-jaxrpc-api_1.1_spec 软件包会在 JBoss EAP licenses.xml 文件中列出不正确的许可证。正确的许可证信息是 CDDL具有 with the Classpath 例外的 GPLv2
  • RPM 和 ZIP 安装的工件许可证之间存在一些差异。ZIP 安装中的许可证信息有效,但在上一条目中提到的 jboss-jaxrpc-api_1.1_spec 软件包许可证信息除外。
  • 尝试将类型为 PKCS12 的凭证库用于 IBM JDK 或 HP JDK 时会出现问题。解决办法是使用 JCEKS 凭证库。更多信息请参考 JBEAP-13586
  • 以下 JIRA 是由 JDK 程序错误导致的,修复这些问题超出了 JBoss EAP 的范围:

    • JBEAP-8207:使用 Elytron、IBM java、SPNEGO 时出现 "continuation required" 情况
    • JBEAP-10483:HTTP2 via JSSE 和 wildfly ALPN hack ssl engine 在 Solaris 11 上出现故障

      JBoss EAP 解决此问题的方法是在默认 JBoss EAP 配置中禁用 OracleUcrypto 提供程序。但是,这样做可能导致在 Solaris 10 平台上使用 HTTP over TLS 时出现问题。如果遇到这种问题,或者启用 OracleUcrypto 提供程序,或者使用 150401-52 补丁或更新的补丁程序来更新 Solaris 10 计算机。





Revised on 2018-03-07 20:32:47 EST

法律通告

Copyright © 2018 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, 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 Software Collections 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.