6.4.0 发行注记


JBoss 企业级应用程序平台 6.4

适用于红帽 JBoss 企业版应用程序平台 6

Red Hat Customer Content Services

摘要

这些注记包含和 Red Hat 企业级应用程序平台 6.4 相关的重要信息。在安装产品前请仔细阅读这些发行注记。

1. 概述

Red Hat JBoss 企业级应用程序平台 6(JBoss EAP 6)是 Red Hat 对目前机构开发和部署企业级应用程序的方式的重大变化的回应。由于机构寻求更低的运营成本并缩短新应用程序的上市时间,我们重构了 JBoss EAP 6,使其拥有创新的模块化、对云架构的支持、强大的管理和自动化和世界级的开发人员生产力。
JBoss EAP 6 是 Java EE 6 认证的功能强大的平台,它可以灵活地管理,也拥有改进的性能和扩充性、以及提高开发人员生产力的许多新的功能。有着 Red Hat 的市场领先的认证和支持的信誉,它可以确保您的管理和发展的需要并继续面向未来和超越。

2. 新功能、增强和技术预览

2.1. 新的功能

JBoss EAP 6.4 添加了下列新的功能和改进。
Apache 服务器和连接器
mod_snmp 和 mod_rt 在 ppc64 现在可用了

从JBoss EAP 6.4 开始,mod_snmpmod_rt 在 ppc64 上的 Red Hat Enterprise Linux 系统里可用了。

API
通过管理 API 启用 Web 容器的全局会话超时设置。

全局 HTTP 会话超时现在可以用管理 API 来进行配置。

对 WebSockets 用例开放公用的 API

Websockets API 的 javax.websocketjavax.websocket.server 软件包里的所有类现在都开放为公用的了。

验证管理者
在 org.jboss.security.AuthenticationManager 接口里添加 logout() 方法

我们在 org.jboss.security.AuthenticationManager 接口里添加了 logout 方法。如果您已经实现了如下例的自定义 org.jboss.security.ServerAuthenticationManager,请注意这一点。

<valve>
 <class-name>org.jboss.as.web.security.jaspi.WebJASPIAuthenticator</class-name>
 <param>
  <param-name>serverAuthenticationManagerClass</param-name>
  <param-value>com.acme.ServerAuthenticationManager</param-value>
 </param>
</valve>
Copy to Clipboard Toggle word wrap
群集
mod_cluster 的 fail_on_status

在 mod_cluster 里添加了对 fail_on_status 的支持。fail_on_status 可以用于指定一个或多个 HTTP 状态码,所以如果群集里的工作节点返回其中一个指定的状态码,它将导致工作节点故障。然后负载平衡器将发送进一步的请求到群集里的另外一个工作节点。

域管理
支持的嵌套表达式

表达式可以嵌套,这允许使用高级表达式来替代固定值。管理 CLI 在允许表达式的地方都是允许嵌套表达式的。至于普通表达式,解析嵌套表达式的来源是:系统属性、环境变量和 Vault。

通过 Admin API 读取引导错误的能力

我们创建了一个新的管理 CLI 命令,它输出发生在引导时的任何错误的细节。这个命令是 read-boot-errors,它没有参数。

基于 HTTP/HTTPS 的管理的 Kerberos 验证

现在您可以配置通过 HTTP/HTTPS 进行的管理操作的 Kerberos 验证。这意味着管理控制台现在可以用 Kerberos 验证。

EE
无需 EAR 名称在 jboss-ejb3.xml 里指定资源适配器引用的能力

jboss-ejb3.xml 部署描述符里,当部署描述符和资源适配器位于相同的 EAR 里时,您可以为 Message Driven Bean (MDB) 指定资源适配器而无需指定 EAR 名称,

EJB
新的 StrictMaxPool 实现

通过修改底层的数据结构消除了 EJB StrictMaxPool 里出现的争夺。

对非群集的 EJB 定时器使用替代的持久化库

现在 EJB 定时器的数据可以存储在数据库里并在群集服务器实例间共享。这个方法的优点适用于高可用性环境。

为 jboss-ejb3.xml 里的 <ejb-name> 启用通配符

为 jboss-ejb3.xml 里的 <ejb-name> 启用对通配符(*)的支持。

Hibernate
为 MySQL 5.7 添加新的 Hibernate 方言

为了支持 MySQL 5.7,我们添加了新的 Hibernate 方言。要防止日期和时间里小数位的四舍五入,对方言现在有下列限制:对 "timestamp" 字段,Hibernate 假定 datetime(6),而对于 "time",Hibernate 假定 time(0)

HornetQ
关闭目的地上所有消费者和这些消费者的连接的能力

我们添加了关闭目的地上所有消费者和这些消费者的连接的能力。这个命令可以通过管理 CLI、管理 API 和 JMX 来使用。

中止慢速的 HornetQ 消费者

现在系统可以自动监控消息消费者的速度,如果其速度没有达到指定的标准会采取行动。最小的消费速度以消息每秒指定,如果没有达到,消费者连接被终止或由应用程序发出管理通知。默认情况下这个功能是禁用的。

按照 JMS 用户终止连接的能力

HornetQ 现在支持以 JMS 用户为标准来终止连接。之前只能按照客户 ID 或 IP 地址来终止连接。

Hibernate Search
将 Hibernate Search 设置为默认模块

Hibernate Search 现在是 JBoss EAP 的标准组件了。

安装程序
在安装程序里测试数据源和 LDAP 连接

当通过图形界面或控制台模式安装 JBoss EAP 时,在安装过程中安装程序现在会提供检测 LDAP 和数据源连接性的选项。这确保了安装过程中提供的参数是有效的。

JBoss Web
从 JBoss Module 里的 JAR 加载 taglibs

Tag Library Descriptors (TLDs) 可以从各自的应用程序分离出来,让添加和更新更为容易。要使用这个功能,请创建一个包含 TLD JAR 的自定义 JBoss EAP 6 模块,然后在应用程序里声明对该模块的依赖关系。

配置 Http-Only SSO cookies 的能力

我们在虚拟服务器的 SSO 配置里添加了一个新的属性:http-only。当将其设置为 true 时,这个属性添加 HttpOnly 到 Cookie 头部,指示浏览器应该限制来自非 HTTP API 的访问。

用户应该意识到支持这个限制的选项取决于客户(Web 浏览器)。
通过限制非 HTTP API(如 JavaScript)的访问,这个动作可能减轻安全漏洞的风险。
JCA
启用对 "datasource_class" 系统属性的支持

在默认情况下,当数据库驱动 JAR 包含了一个 services/javax.sql.Driver 文件时,数据源定义里的datasource_class 属性将被忽略而使用 JAR 里的 Driver 类。要覆盖这种默认的行为并使用 datasource_class 属性,请设置属性 -Dironjacamar.jdbc.prefer_datasource_class=true

检测到 JCA 1.7 资源适配器并抛出部署异常

如果检测到 JCA 1.7 资源适配器会抛出异常,因为它属于基于 EE7 的平台。

添加 Leak detector 池

IronJacamar 现在推出了一个连接池实现,它监控连接并在应用程序永不释放时提供反馈。当这个池被关闭或冲刷时,系统日志里将记录跟踪栈信息。要启用这个连接池,请将系统属性 ironjacamar.mcp 设置为 org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool。要将跟踪栈信息输出到单独的文件里,请将系统属性 ironjacamar.leaklog 设置为相应的文件名及路径。

-Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
Copy to Clipboard Toggle word wrap
-Dironjacamar.leaklog=leaks.txt
Copy to Clipboard Toggle word wrap
JMS 操作
为 JMS 资源添加 remove-jndi 操作

现在 JMS 资源里启用了 remove-jndi 操作。

JMX
为 EAP 6 里的 facade MBean 启用 JMX MBean 注册和取消注册的通知。

jboss.asjboss.as.expr 域里的 MBean 不是真正的 MBean 而是 facade。因此,MBean 的注册和取消注册事件是不可用的。现在我们启用了这些域的注册和取消注册事件,并允许监控这些事件。

日志
为基于大小的文件轮换添加后缀支持

我们为基于大小的文件轮换添加了对时间戳的支持,在日志文件轮换时它附加到每个日志文件。时间戳的格式可根据需要进行配置。之前它只能有数字后缀,在某些情况下查找相关的日志文件会比较困难。

在 JBoss Logging 里实现 java.util.logging.LogManager.getLoggerNames()

getLoggerNames() 方法已被添加至 java.util.logging.LogManager,它返回所有 logger 的名称。

审计 syslog handler 应该能够自动重连

审计 syslog handler 添加了新的属性 reconnect-timeout,它指定重连 syslog 服务器的间隔。

使 PeriodicSizeRotatingFileHandler 可以直接通过 CLI/Web 控制台来配置

PeriodicSizeRotatingFileHandler 现在可以通过管理控制台或 CLI 来配置。之前这样的处理程序只能使用自定义处理程序来配置。新的配置方法更容易使用且不容易出错。

为系统属性的 "password" 设置掩码

任何包含文本 password(不区分大小写)的系统属性在通过 logger 输出时将用 redacted 进行替换。这避免了在日志文件里出现明文密码,从而提高了安全性。

管理 CLI
CLI 应该支持元素名的属性替换,而不仅仅是参数。

我们添加元素名称的属性替换。之前管理 CLI 只支持参数的属性替换。

添加 echo 命令以用于 CLI 脚本

我们添加了一个新的 echo 管理 CLI 命令。它逐字输出命令后的任何文本。

管理控制台
在图形化控制台里显示服务器日志

您现在可以在 JBoss EAP 管理控制台里查看服务器和应用程序日志以帮助诊断错误、性能和其他问题。对于在管理控制台的日志查看器里可查看的日志,它必须位于服务器的 jboss.server.log.dir 目录。日志查看器也承认用户的 RBAC 角色分配,所有登录到管理控制台的用户只能查看被授权访问的日志。

访问 Red Hat 插件

现在您可以在管理控制台里访问常用的 Red Hat 客户门户功能。管理控制台顶部的导航条包含一个下拉菜单:Red Hat Access。点击这个菜单会显示三个任务专有的到客户门户的链接:Search Customer PortalOpen CaseModify Case

在控制台里开放 Web 容器的全局会话超时设置

全局 HTTP 会话超时现在可以用管理控制台来进行配置。

Naming
对于远程 TIBCO EMS 查找使用外部上下文

当使用普通的 JMS 资源适配器来连接外部消息服务器时,您可以使用外部上下文而不是编写自定义 ObjectFactory。下面是一个使用 <external-context>示例摘录。请用适合您的 JMS 供应商的属性替换下面例子里的属性。

<external-context name="java:global/tibco" module="com.tibco.tibjms" class="javax.naming.InitialContext">
 <environment>
  <property name="java.naming.factory.initial" value="com.tibco.tibjms.naming.TibjmsInitialContextFactory"/>
  <property name="java.naming.provider.url" value="TIBCO_EMS_SERVER_HOST_NAME:PORT"/>
  <property name="java.naming.factory.url.pkgs" value="com.tibco.tibjms.naming"/>
  <property name="org.jboss.as.naming.lookup.by.string" value="true"/>
 </environment>
</external-context>
Copy to Clipboard Toggle word wrap
补丁
改进了对补丁细节的访问

管理 CLI 命令 patch 有两个额外的参数: inspectinfoinfo 参数输出 installed 补丁的信息,而 inspect 参数则输出 downloaded 补丁的信息。

改进了管理控制台的 Patch Management 面板,包含每个补丁的简短描述以及到更详细内容的链接。
性能
从 1.2 版本里删除向后移植 AbstractPool initLock() 同步

当调用从池里获得连接后注册事务时会创建一个锁。既然事务注册表已经处理了锁且使用并行连接,额外的锁处理是没有必要的,所以会被删除。

新的受管连接池

在 JCA 子系统里创建了新的受管连接池,提高性能并消除服务器里的线程竞争。

PicketLink
集成 PicketLink 子系统到 EAP 控制台的插件

PicketLink 子系统现在可以通过 JBoss EAP 管理控制台来配置,更易于管理。

修改 PicketLink IDP 以支持 SAML 2.0 自发响应

增强了 PicketLink Identity Provider (IDP),它现在可以发送 SAML 2.0 自发响应到服务提供者。

PicketLink 应该是可配置的以忽略 ajax 调用

当用户没有验证并使用 AJAX 发送请求到 IdP 和 SP 时,PicketLink 将用 403 HTTP 状态码而不是登录页面来响应。用 XMLHttpRequest 值检查 X-Requested-With 头部的存在可以确认 AJAX 请求。

RESTEasy
使用 JBossLogging 的 RESTEasy 日志

RESTEasy 的日志功能现在是由 JBossLogging 处理的。这样做的好处包括对日志消息国际化的支持。

新的安全性参数

RESTEasy 有两个新的参数来增强处理 org.w3c.dom.Document 的安全性。两者都是 context-param 参数且都可以在应用程序的 web.xml 里进行设置。

resteasy.document.secure.processing.feature 强制实施了在处理 org.w3c.dom.Document 文档和 JAXB 对象表示形式时的安全约束。
The parameter resteasy.document.secure.disableDTDs 禁止在 org.w3c.dom.Document 和JAXB 对象表示形式里使用 DTD。
resteasy.document.secure.processing.featureresteasy.document.secure.disableDTDs 的默认值是 true。要都禁用或禁用其只一个,请在应用程序的 web.xml 文件里添加下列内容:
<context-param>
 <param-name>resteasy.document.secure.processing.feature</param-name>
 <param-value>false</param-value>
</context-param>
<context-param>
 <param-name>resteasy.document.secure.disableDTDs</param-name>
 <param-value>false</param-value>
</context-param>
Copy to Clipboard Toggle word wrap
RPM 安装和更新
现在可以选择 RPM 频道或资料库来订阅 JBoss EAP 的 RPM 安装和更新。目前的 JBoss EAP 频道提供了最新的版本,而次要频道则提供专门的次要版本及所有的补丁。这允许您保持着相同的次要版本,而仍可以使用重要的安全补丁。关于可用频道的详情,请参考 https://access.redhat.com/solutions/1346093
安全性
SSLValve 允许用户配置的头部名称

以前 SSLValve 用来传递来自发起者的 SSL/TLS 信息的 HTTP 头部的名称是预定义的,如:ssl_client_cert、ssl_cipher、ssl_session_id 和 ssl_cipher_usekeysize。进行修改后,头部名称现在是可以定制的,发起者可以使用 SSLValve 配置里指定的任意的 HTTP 头部名称。

Remoting 的基于 Kerberos 的验证

现在启用了对 EJB 和 EJB 客户的 Kerberos 验证。

管理安全区应该缓存 LDAP 数据

管理安全区现在缓存 LDAP 数据,这有助于减少 LDAP 请求的次数。

对 Oracle JVM 上的 Oracle DB 的静态 Kerberos 凭证的授权

添加了在 Oracle JVM 上的 Oracle DB 数据源里使用静态 Kerberos 凭证的授权。请注意这要求 Oracle DB 驱动 11.2.0.3 或更新的版本,而且必须启用安全区缓冲。

对 Oracle JVM 上的 SQLServer 的静态 Kerberos 凭证的授权

添加了在 Microsoft SQL Server 数据源里使用静态 Kerberos 凭证的授权。请注意只有 Non-XA 连接支持这个功能。

在 PicketBoxVault 实现里添加对密钥库外部密码的支持

Vault 功能现在支持通过外部命令或自定义提供的密钥库密码。

在 Vault 工具里添加 "remove vault entry" 选项

我们改进了 Vault CLI 工具,添加了删除 Valut 里保存的 Vault 的功能。

在 Java 安全管理者的配置里使用 -secmgr 标记

在启动脚本里添加 -secmgr 参数或启用配置文件里的 SECMGR="true" 选项可以让 JBoss EAP 在 Java 安全管理者里运行。现在不可以再用 -Djava.security.manager Java 系统属性来启用 Java 安全管理者,因此自定义安全管理者不能再使用了。启用自定义安全管理者来启动 JBoss EAP 将导致非零的退出代码。关于启用 Java 安全管理者所需的修改,请参考《安全指南》

支持的配置
Oracle JDK 8

Oracle Java Platform, Standard Edition 1.8 (JDK 8) 已被添加到被支持的配置列表里。

IBM JDK 8

IBM JDK 8 已被添加到被支持的配置列表里。

DBMS

下列的 DBMS 已通过认证且被完全支持:

  • Enterprise DB Postgres Plus Advanced Server 9.3
  • MySQL 5.7
  • IBM DB2 10.5
  • Microsoft SQL Server 2014
  • PostgreSql 9.3

为 PPC 上的 RHEL 测试版本提供 mod_snmp

运行 Red Hat 企业版 Linux 6 和 Red Hat 企业版 Linux 7 的 PowerPC64 架构现在支持简单网络管理协议(Simple Network Management Protocol,SNMP)模块 mod_snmp 了。

WebSockets 1.0
WebSocket 1.0 协议提供 Web 客户端和服务器间的两种通讯方式。客户端和服务器间的通讯是基于事件的,和轮询方法相比,它有更快的处理速度和更小的带宽。
JBoss EAP 6.4 WebSocket 实现为服务器端点提供了完整的依赖关系注入支持,然而它没有为客户端点提供 CDI 服务。CDI 服务限于 EE6 平台要求的内容,因此,EE7 功能如端点拦截器不被支持。

2.2. 改进

安装程序

BZ#1169462 - 在自动安装过程中安装程序应该自动寻找变量文件
在 JBoss EAP 6.4 里,安装程序在自动安装过程中现在会自动寻找变量文件。
只有运行自动安装且没有通过 -variables-variablefile 标记传入任何变量,安装程序才会寻找 .variables 文件。
按照程序将首先查找 auto.xml 文件的位置。如果没有找到,它将在用户的工作目录里继续查找。
如果用户指定了一个远程 auto.xml,安装程序将在用户的工作目录里查找 .variables 文件。
只有符合下列命名规范,.variables 文件才能被检测到:<NAME_OF_AUTO.xml>.variable

事务管理者

BZ#1168973 - JTS 参与者没有显示在 tooling 里

本版本的 JBoss EAP 6 包含了对 Transaction Manger 组件的增强。之前,不是所有的参与者都出现在日志查看器里。

现在将显示下列类型的参与者:
  • AssumedCompleteHeuristicTransaction
  • AssumedCompleteHeuristicServerTransaction
  • AssumedCompleteTransaction
  • AssumedCompleteServerTransaction

2.3. 仅作为技术预览提供的功能

下面的配置和功能只是作为技术预览提供,产品环境是不支持的。
WS-Trust/STS 和 JBoss Web Service
JBoss Web Service 现在开放了底层的 CXF 实现的 WS-Trust/STS 功能。
Apache CXF 2.7.13 修改了 SAML/WS-Trust
安全令牌服务(Security Token Service,STS)现在也会检验 ActAs 令牌,虽然它以前只检验 OnBehalfOf 令牌。因此,您必须在作为 ActAs 令牌提供的 UsernameToken 里指定有效的用户名/密码。
现在,SAML Bearer 令牌需要具有内部签名;而且,org.apache.ws.security.validate.SamlAssertionValidator 需要有一个 setRequireBearerSignature 方法来启用/禁用这个签名的检验。
用 JBoss CLI 添加和删除模块
CLI 提供了添加和删除模块的新命令。
用 Hibernate Validator 进行 RestEasy 检验
RestEasy 现在包含了一个检验提供者来支持 JBoss EAP 6 附带的 Hibernate Validator。
Multi-JSF
这个功能让用户可以用自己的 JSF 实现替换 JBoss EAP 6 提供的 JSF 实现。
mod_jk 和 IPv6
mod_jk 的版本已被更新。这个新的版本包含对 IPv6 的支持,然而这个功能还未进行完整的测试。

3. 已解决和已知的问题

3.1. 已解决的问题

补丁

BZ#1110117 - 在关闭过程中查询 Patching MBean 导致 IllegalStateException

试图查询 JBoss EAP 实例的补丁状态以前可能导致 IllegalStateException 抛出。其根本原因是 InstallationManagerService 已被关闭而不可用。通过首先检查 InstallationManagerService 是否可用,本版本解决了这个问题。

EJB

BZ#1172856 - 服务器端 EJB 处理程序没有压缩响应
在以前的 JBoss EAP 6 版本里使用 EJB 压缩时,客户会发送一个压缩请求,但服务器发送的是未压缩的响应,即使是配置成应该发送压缩响应。
在本版本里,服务器将用压缩的响应进行回复。
BZ#1118432 - 如果 remote-naming InitialContext 应被关闭,将抛出 java.util.concurrent.RejectedExecutionException。
如果使用远程命名来查找 EJB,系统会创建一个 ejb-client 上下文。如果完成后远程命名上下文对象被关闭,客户将记录下面的错误日志,这是因为 ejb-client 已被关闭却试图再次关闭。通过在关闭前检查 ejb-client 上下文,我们解决了这个问题。
ERROR [org.jboss.remoting.handler-errors] Close handler threw an exception: java.util.concurrent.RejectedExecutionException
Copy to Clipboard Toggle word wrap
BZ#1156620 - 由于 EJB 客户没有取消关联,卸载 & 太多频道导致内存泄露。
这个 JBoss EAP 6 版本修复了一个应用程序导致的内存泄露问题,这个应用程序使用 jboss-ejb-client.xml 来配置远程的 EJB 客户连接。
这个修复也解决了另外一个关于带作用域的上下文的问题,过多的频道出现(因此,频道要等到给定主机的所有频道被关闭时才被关闭)。现在在调用 Context.close() 时关闭了这个频道,即使其他频道仍然对于相同的主机开放。
BZ#1088463 - 如果将大型参数传入 EJB 方法,客户将显示 EJBCLIENT000032 异常 - the OutOfMemoryError is swallowed

在以前的 JBoss EAP 6 版本里,当大型值传入 EJB 调用的参数时,频道会崩溃并在服务器上显示 out of memory 错误。在 ejb-client 上会显示指示错误发生在某些参数的解组过程中并带有可能的 OOM 信息。本版本已修复这个问题。当大型值传入 EJB 调用的参数时,OOM 异常显示在服务器上,且客户端会显示一个提示。

CDI/Weld

BZ#1159570 - CDI 注入的主题无法工作
在以前的 JBoss EAP 6 版本里,注入 JMS 主题 到 CDI Bean 会失败并显示下列错误:
javax.jms.InvalidDestinationException: Not a HornetQ Destination:HornetQTopic[EventTopic]

   @javax.inject.Inject 
   private javax.jms.Topic topic
Copy to Clipboard Toggle word wrap
本版本里注入可以正常进行了。
BZ#1166133 - Bean 代理类将原始的可变参数方法表示为无参方法

在以前的 EAP 版本里,Bean 代理将可变参数方法错误地表示为带有队列参数的无参方法。这导致依赖反射(Reflection)的框架出现问题。

我们通过在代理方法的字节码中添加缺失的可变参数标记解决了这个问题。现在,可变参数方法在 Bean 代理里可以正确表示了。
BZ#1146853 - 使用具有相同类和软件包的静态嵌套类时代理名称发生冲突

在以前的 EAP 6 版本里,如果被不同类封装的两个具有相同名称的静态嵌套类被用作 Bean,Weld 会用相同的类名生成代理,而在使用这些 Bean 时会抛出 ClassCastException

通过修改代理类名的生成过程来包含封装类的名称,我们解决了这个问题。现在两个静态类可以具有相同的简单类名,即使被同一个软件包里的两个不同类封装。
BZ#1054876 - 当超类不具有无参构造器时创建代理失败

以前的 JBoss EAP 版本包含的 Weld 实现执行了不必要的严格检查,它要求所有超类都必须具有公共的无参构造器。

这个版本已经解决了这个问题,现在只检查 bean 自身而不是所有超类的可代理性。
BZ#1149644 - CDI 拦截器无法注入 EJB 会话上下文

以前的 JBoss EAP 6 里的 Weld 集成代码存在一个疏忽,它不能将 EJB 会话上下文注入到 CDI 拦截器里。

通过为所有 EJB 上下文的注入点提供正确的 EJBContext JNDI 位置,本版本解决了这个问题。
BZ#1138192 - Package-private 成员无法用于静态模块里的 CDI bean

以前的 JBoss EAP 6 里的 Weld 集成代码有一个类加载优化,当声明了 package-private 无参构造器的静态模块里的任何正常作用域的 Bean 注入到部署里的 bean 时,它会导致 IllegalAccessException 抛出。

通过限制优化并对源自静态模块的类代理使用静态模块的 ClassLoader,本版本解决了这个问题。

静态模块里带有 package-private 构造器的 Bean 不再抛出 IllegalAccessException 了。
BZ#1086555 - Weld - 通用 Bean 的 Specialization 抛出不合适的异常

在以前的 JBoss EAP 6 版本里,设置通用 bean 的 specialization 会抛出 DefinitionException

本版本解决了这个问题,对普通类设置 specialization 现在可以正常进行了。

域管理

BZ#1111575 - subnet-match 无法解析 'value' 属性

以前版本的 JBoss EAP 6 的一个程序错误会阻止 subnet-match 解析 value 属性。

这个版本已经解决了这个问题,value 属性可以正常使用了。
BZ#1159709 - 部署扫描时的 IO 错误触发了卸载

在以前的 JBoss EAP 6 版本里,FileSystemDeploymentService.scanDirectory() 方法将 File.listFiles() 返回的 null 值作为空表而不是错误来对待。

因此,部署扫描时发生的 IO 错误可能触发应用程序的卸载。

这个版本已经解决了这个问题,如果到达文件限额,已部署的应用程序不会再被卸载了。
BZ#1133328 - 主机控制器上没有执行对转出 LDAP 连接的 runtime 更新

JBoss EAP 6 的域管理操作处理程序可以指定 runtime 更新是否应该根据模型更新的结果来执行。在以前的版本里,如果在服务器进程里运行,操作处理程序只会请求转出 LDAP 连接定义的 runtime 更新。

因此,对主机控制器进程里转出 LDAP 连接的修改不会导致对该进程的立即 runtime 更新。

在这个版本里,受影响的操作请求的 runtime 更新应用在所有的进程类型里,且对转出 LDAP 连接的修改立即反映在应用服务器进程和非应用服务器进程里。
BZ#1148565 - 管理 HTTP 服务器过早地关闭了空闲的连接

JBoss EAP 的管理 HTTP 服务器包含一个超时处理程序,它的目的是在 5 分钟后终止空闲连接。

在以前的版本里,超时处理程序在 30 秒后终止空闲连接。副作用是任何活动的 SSL 会话也会被终止。在随后的调用里,当客户的 Web 浏览器重新连接时,SSL 会话需要重新创建。

本版本将空闲连接的超时时间设置成了 5 分钟。

Web 浏览器现在可以正常关闭活动的连接,让任何底层的 SSL 会话保持不变并允许 Web 浏览器下次连接时恢复之前的会话。
BZ#1106393 - 在对 HC 的连接请求期间受管服务器意外地关闭

在以前的 JBoss EAP 6 版本里,在受管服务器对主机控制器的连接失败后,它只会进行一次的重新连接尝试。

在重新连接失败时,这可能导致系统意外地关闭。

在这个版本里,到主机控制器的连接会无限次地重试。服务器实例不再由于丢失到主机控制器的连接而关闭了。
BZ#1105677 - 不存在 LDAP 组导致安全区里验证失败

在以前的 JBoss EAP 6 版本里,包含对不存在的组的引用的用户在执行 LDAP 的 principal-to-group 搜索以加载用户组信息时出现验证失败。用户的验证将被中止。

在 JBoss EAP 6.4 里,我们在 principal-to-group 配置里定义了一个为 "true" 的 skip-missing-groups 属性,允许忽略组的缺失,从而修复了这个问题。
BZ#1073866 - 在 6.3.0.DR2 里添加 server-identity=ssl 到 SecurityRealm 里时抛出 NPE

在以前的 JBoss EAP 6 版本里,对于添加的服务列表,runtime 更新返回 NullPointerException,由此使得服务的回滚变得非常困难。

在 JBoss EAP 6.4 里,这个错误已被修复,服务引用列表将作为 runtime 更新提供。
BZ#1151434 - 在删除连接后 outbound-connections 元素没有根据 XSD 进行检验

在管理模式里,当定义新的转出 LDAP 连接时,资源将被实例化以保持子 LDAP 连接。

在以前的 JBoss EAP 6 版本里,当最后一个子资源被删除时,这个资源不会被删除。

这是因为 XML 编组遇到定义的模型里的转出 LDAP 连接时,它会将这些内容写入 <outbound-connections> 元素。因为这个模型里并没有连接,这个元素会保持为空,而按照 schema 则是无效的。

请注意:解析器允许这种情况,它不会阻止随后的服务器启动。

在这个版本里,一旦最后一个子资源被删除,资源也会被删除。解析器如果看到没有定义的转出连接,不会再写入空的 <outbound-connections> 元素。
BZ#908236 - 为没有安全区的 HTTP 管理接口定义安全套接字将导致 NullPointerException

以前的 JBoss EAP 6 版本不会执行模型检验来确保 HTTP 管理接口启用 SSL,也不会引用安全区来获取其 SSLContext。

没有这种检验,SecurityRealm 将为 null,从而导致 NullPointerException

在这个版本里,在更新应用到管理模型时将进行额外的检查以确保和 HTTP 管理接口相关联的安全区启用了 SSL。

如果用户试图定义一个带有 SSL 但没有关联安全区的 HTTP 管理接口,错误信息将被报告而不时抛出 NullPointerException
BZ#1129400 - 无法用 HTTP 管理接口创建资源适配器

在以前的 JBoss EAP 版本里,添加资源适配器的操作里的逻辑要求目标地址以 DMR ModelType.PROPERTY 元素列表的形式出现。

这意味着,使用 JSON 的基于 HTTP 的管理客户无法可靠地创建使用期望格式(遵照 JSON 语法的 $PROPERTY 元素可能有问题)的操作。

在这个 JBoss EAP 6 版本里,我们更新了资源适配器的 add 操作以使用标准的地址解析代码,它更宽容格式的区别。因此,用 HTTP 接口和 JSON 添加资源适配器的操作现在可以成功完成了。
BZ#1133961 - XML 解析会强制设置 username-to-dn 上的 'force' 属性,即使它已有默认值。

在 JBoss EAP 6 里,在为安全区的 LDAP 授权定义的 username-to-dn 元素里,schema 会描述一个可选属性 force

以前的版本里实现了一个解析器来确保强制设置这个属性。

这导致如果这个可选属性被忽略,本来按照 schema 是有效的配置被解析器拒绝。

我们在这个版本里更新了解析器,现在忽略了 force 属性的配置也可以被解析器正确地解析。
BZ#1052821 - 用 HTTPS 访问 Web 控制台时进行了不必要的 DNS 查找

如果客户连接至服务器并初始化 SSL 会话,它会试图解析客户主机名称。如果客户名称是一个地址,这会涉试图发现名称的 DNS 查找。在执行 DNS 查找时会影响远程客户连接的性能,此外,如果 DNS 服务器不可用,这还会导致长时间的延迟。

JBoss EAP 6.4 已经修复了这个问题,当客户试图连接并建立 SSL 会话时不会再在服务器上进行 DNS 查找了。

事务管理者

BZ#1162882 - JBTM-2188 - PrivilidgedAction 块缺失了写入文件库的一些代码
在以前的 JBoss EAP 6 里,如果启用了安全管理者,Narayana 事务管理者将不被允许在 FileSystemStore 类管理的对象库文件里读或写。
这是因为,当使用安全管理者时,它会检验代码是否具有访问文件系统的权限。这个过程会检查整个方法调用链,这意味着有可能有些类没有访问文件系统的权限。
本版本进行的修复将文件系统作为特权实体来访问(AccessController.doPrivileged()),这减小了安全管理者承认为访问文件系统的特权实体类的栈。
BZ#1133346 - XA 恢复扫描会阻止 JBoss 启动

JBoss EAP 6 通过使用其他子系统提供的 "RecoveryHelpers" 的有疑问的事务分支的视图资源来进行事务恢复。当部署注册其中一个 Helper 时会使用锁。而恢复资源时会使用相同的锁。

如果资源完成恢复请求太慢,子系统部署(等待锁)也会延迟。

本版本消除了对锁的竞争,子系统可以如期部署了。
BZ#1113225 - CMR: 在崩溃后 TX 日志没有显示参与者

在以前的 JBoss EAP 6 版本里,读取事务日志的工具没有开放 CMR 记录。

这个版本已经解决了这个问题。
BZ#1077156 - 服务器绑定到 ::1 时无法在 IPv6 上启动 XST 事务

在以前的 JBoss EAP 6 版本里,服务器绑定到地址 ::1 时无法在 IPv6 上启动 XST 事务。这是因为地址的一部分必须包裹在方括号里:如 [::1]

通过在传入 XTS core 前将 URL 分隔为不相连的部分并插入方括号,本版本解决了这个问题。

请注意,如果您在 CLI 命令里使用了 -b 选项,请不要将 URL 的地址部分包裹在方括号里,因为这不符合规格且会阻止 Web Services 启动。
BZ#1032641 - 当服务器是用定义的 XA 数据源重载时,定期的恢复操作会出现 IllegalStateException。

在一些事务恢复操作过程中,以前的 JBoss EAP 6 会出现 IllegalStateException

事务恢复系统通过查询有疑问的事务分支的资源进行操作。它使用 JCA 注册 "RecoveryHelper" 来实现这一点。

当资源从系统里删除时,RecoveryHelper 将取消注册。在以前的版本里,代码里会有一个竞争条件,如果删除发生在“恢复扫描”期间,那么 Helper 不会被删除。

这导致事务恢复有可能继续使用资源,即使这个资源已经从服务器删除(产生 IllegalStateExceptions)。

在本版本里,如果当前的恢复扫描使用某个资源,它将等待它完成,然后删除 Helper。
BZ#1124861 - 用 CMR 进行恢复时出现问题,虽然恢复正常但会依赖于 orphan 检测。

在以前的 JBoss EAP 6 版本里,如果服务器在 XA 事务期间崩溃,XA 资源不会总是立即进行回滚。

通过升级 org.jboss.jbossts,本版本解决了这个问题。事务现在可以立即回滚,日志也如预期一样干净。
BZ#900289 - 域管理 API 没有开放事务对象库里的 JTS orphan

JBoss EAP 6 里包含的事务子系统维护着一个待定事务日志 。这个日志对控制台用户开放。

在某些情况下,资源会拥有一个有疑问事务的日志,它没有相应的顶级事务日志(但在磁盘上有一个 participant 日志)。这样的日志被称为“Orphan”且在以前的版本里默认是不开放的。

因此,如果配置事务子系统使用 JTS,那么这些 Orphan 记录将不会自动删除,导致可用存储空间溢出。

在本版本里,控制台用户可以通过设置事务子系统属性 expose-all-logstrue 来覆盖默认设置。然后控制台用户可以选择手动删除这些日志,防止存储空间溢出。

JMX

BZ#1113242 - RemotingConnector 和 VersionedConectionFactory 需要可配置的连接、频道以及不同版本的连接超时。

以前的 JBoss EAP 6 版本包含几个硬编码的 JMX 连接超时。在本版本里可以通过系统属性或在创建 JMXConnectorFactory: JMXConnectorFactory.connect(serviceURL, environment); 时传入属性来配置这些间隔。

这些设置的优先级顺序如下:
  1. 默认值是 30 秒。
  2. Env map 属性覆盖默认值。
  3. 系统属性覆盖传入 env map 的值。

专有属性顺序:

专门的超时属性:
  1. Channel timeout: org.jboss.remoting-jmx.timeout.channel
  2. Connection timeout: org.jboss.remoting-jmx.timeout.connection
  3. Versioned Connection timeout: org.jboss.remoting-jmx.timeout.versioned.connection

如果设置了 org.jboss.remoting-jmx.timeout 属性但没有设置专有属性,普通值而不是默认值将被使用。
BZ#1185118 - RootResourceIterator 里出现随机的 NPE
在以前的 JBoss EAP 版本里,将管理资源作为 JMX MBean 开放的 facade 里的逻辑对子资源进行了不必要的重复读取。如果资源是动态的或可能被非管理动作删除(例如,应用程序添加或删除的临时 JMS 队列资源),那第二次读取就可能返回空的子资源。
因此,远程客户调用远程的 JMX 服务器方法如 getMBeanCount() 可能间歇性地导致随机的 NullPointerExceptions 及类似下面内容的日志消息:
[0m[33m18:38:11,612 WARN [org.jboss.remotingjmx.protocol.v2.ServerCommon] (pool-2-thread-12) Unexpected internal error: java.lang.NullPointerException
				  at org.jboss.as.jmx.model.RootResourceIterator.doIterate(RootResourceIterator.java:49)
Copy to Clipboard Toggle word wrap
在本版本里,我们删除了子资源的重复读取,使用第一次读取的值(永不会是 'null')。这确保了 NullPointerExceptions 不再发生。

Remoting

BZ#1126489 - 对要求 readObject 权限的对象编组失败

如果启用了 Java 安全管理者,当 java.util.Calendar 对象作为参数传入或者作为 EJB 方法的响应时,即使 Java 安全策略提供了必要的权限,都会抛出 java.security.AccessControlException。本版本已解决这个问题,异常不会再抛出而编组和 EJB 调用都会成功。
BZ#1161430 - 当克隆的对象具有 writeObject 时,JBoss Marshalling NullPointerException 会发生。

当克隆的对象具有 writeObject 时,JBoss Marshalling NullPointerException 会发生。本版本已解决了这个问题。
BZ#1153281 - 接收 JMS 消息时登记了冗余的日志

每当JMS 消息发往服务器时都会看到 INFO 日志事件。本版本已解决这个问题。

Web 控制台

BZ#1107869 - Web 控制台错误输出并完全终止 jbossas 进程
当在 Web 管理控制台的 ‘Transactions’ 部分启用 JTS 时,也有必要在 JacORB 子系统里设置属性 `transactions` 为`on`。
在以前的 JBoss EAP 6 版本里,管理控制台不会通知用户这个依赖关系。
本版本在控制台添加了一个校验检查,从而纠正了这个问题。
BZ#1026823 - 提供可靠的方法来清除 "Run as" 对话框设置的 "ROLE" 头部信息

在以前的 JBoss EAP 6 版本里,当 Superuser 代替其他用户(通过 Run As... 链接)运行时,它们的角色在动作结束后没有重置。

这个版本已经解决了这个问题,用户不再需要关闭浏览器窗口并重新访问 Web 控制台来使角色重置。
BZ#1017655 - Web services 配置检验出错

在以前的 JBoss EAP 6 版本里,Web 控制台不会拒绝使用 > Web > 配置集的 Web Services 里的 WSDL HostWSDL PortWSDL Secure Port 的无效值。

这个版本已经解决了这个问题。管理模型的检验规则会被承认,错误的值不会再被保存了。
BZ#1029851 - 管理控制台 - 即使在取消部署文件的上传后,其内容仍会被添加到 data 目录。

以前的 JBoss EAP 6 版本里的一个问题,它导致即使用户取消的文件的上传,这个文件仍会通过管理部署屏幕上传成功。本版本已解决了这个问题。

这个问题的出现是因为旧版本允许用户在文件复制已发生后且部署条目添加到 domain.xml 之前取消文件的上传。

在这个版本里,我们重新设计了控制台流程,删除了操作期间的取消选项,从而避免了不完整的操作以及保存文件和 domain.xml<deployment> 条目间不一致的状态。

HornetQ

BZ#1165456 - HornetQ: Disallow SSLv3 [defense-in-depth]

在这个 JBoss EAP 6 版本里,由于最近发现的 POODLE 漏洞,我们禁用了 SSLv3。关于 POODLE 的更多信息请参考 Oracle 的安全主题:http://www.oracle.com/technetwork/topics/security/poodlecve-2014-3566-2339408.html

服务器

BZ#1110635 - 如果在覆盖路径以 "/" 开头,部署覆盖功能无法正常实现。

在以前的 JBoss EAP 6 版本里,添加前缀为 '/' 的部署覆盖无法进行。

在 JBoss EAP 6.4 里,这个问题已被修复。不管是不是以 '/' 开头,部署覆盖都可以完成。
deployment-overlay add --name=example-overlay --content=/lib/example.jar=eap6-overlay-example.jar --deployments=example.ear
Copy to Clipboard Toggle word wrap

Web Services

BZ#1157482 - 在并行调用时 EJB3 Web Service 返回无效的用户

如果通过并行调用进行加载,使用用户名令牌进行验证的 EJB3 Web Service 会有问题。本版本已解决这个问题。
BZ#1115214 - CXF-5679, CXF-5724 - WS-S 在升级后失败并抛出异常 org.apache.ws.security.WSSecurityException: The signature or decryption was invalid

在以前的 JBoss EAP 6 版本里,Apache CXF 2.7.10 里引入的回退会导致错误:
org.apache.ws.security.WSSecurityException: The signature or decryption was invalid
Copy to Clipboard Toggle word wrap

这个版本已经解决了这个问题,现在可以正确执行 WS-Security SOAP 消息的签名验证。
BZ#1121223 - [CXF-5892] 确保 EncryptedKey 元素引用它前面的 BinarySecurityToken

在以前的 JBoss EAP 6 版本里,当 WSS 时间戳没有包含在 SOAP 消息里时,CXF 将 EncryptedKey 元素引用的 BinarySecurityToken 放在 EncryptedKey 元素之后。

这可能导致期望 EncryptedKey 引用的 BinarySecurityToken 在EncryptedKey 元素之上的接收者执行失败,因为当他们在处理 EncryptedKey 元素时试图查找 BinarySecurityToken 但没有处理它。

通过再 SOAP 消息里移动 BinarySecurityToken,我们解决了这个问题。现在在解析 SOAP 消息时 EncryptedKey 元素总是引用已找到的 BinarySecurityTokens
BZ#1155490 - JBoss WS CXF 客户的 HandlerChainSortInterceptor 出现内存泄露

如果 JAX-WS 客户用某个 JAX-WS 处理程序实现,它会无限次地调用服务端口方法,这会导致内存泄露。本版本已经解决了这个问题。

EE

BZ#1029260 - 无法在 jboss-deployment-structure.xml 文件里使用 ear-subdeployments-isolated 属性设置

如果您在 jboss-deployment-structure.xml 里配置 ear-subdeployments-isolated 属性并放入 <EAR>/META-INF 目录,隔离标记将被 sub-system 配置所覆盖。

在 JBoss EAP 6.4 里,这个问题已被修复。处理顺序已被更新。

JPA

BZ#1131711 - org.jboss.as.jpa.hibernate4.management.QueryName.displayable() 上的 HttpManagementService-threads 消耗了太高的 CPU 资源

在以前的 JBoss EAP 6 里,由于较高的 CPU 使用率,org.jboss.as.jpa.hibernate4.management.QueryName.displayable() 上的 HttpManagementService-threads 拖慢了性能。这是由于对 String.replace() 的多次调用引起的。目前的版本已经修复了这个问题。
BZ#1114726 - 当其他子部署引用了实体类时,JPA 实体类的增强无法用于子部署。

在以前的 JBoss EAP 6 版本里,预期在部署时由持久化供应商重写的用户应用程序里的实体类没有被重写。因此,当子部署被并行部署且存在对超出包含持久性单元的部署的其他子部署里实体类的引用时,实体类定义在持久化供应商重写前被加载。这会影响到性能。本版本已解决了这个问题。

JMS

BZ#1070106 - 普通的 JMS 适配器在域模式里无法正确部署

在以前的 JBoss EAP 版本里,在资源适配器的 add 操作里没有正确地检查上下文信息。因此,普通的 JMS 适配器在域模式里无法正确部署。本版本修复了这个问题,现在普通的 JMS 适配器在域模式里可以正确部署了。

JCA,JMX

BZ#1150821 - 如果启用了检验,JMX Datasource 池和 JDBC 统计信息会消失。

在以前的 JBoss EAP 6 版本里,如果启用检验,JMX 数据源池和 JDBC 统计信息可能会消失。这是由于保留了对部分资源模型的引用,而如果这个模型被改动,这些引用会无效。本版本里解决了这个问题,不再在操作过程种保留对部分资源模型的引用。

结果:DataSource 统计信息没有显示。

日志

BZ#1096053 - SyslogHandler 没有正确处理多字节的字符

在以前的 JBoss EAP 6 版本里,使用 org.jboss.logmanager.handlers.SyslogHandler 来登记多字节字符可能导致日志里的错误输出。例如:
Mar 8 17:29:09 UNKNOWN_HOSTNAME java[9896]: SyslogHandler: ????????????
Copy to Clipboard Toggle word wrap

这个版本已经解决了这个问题, 现在字符可以正常输出到日志里了。
BZ#1031448 - logging-profile 可用于 servlet,但不能用于 JSP

在以前的 JBoss EAP 6 版本里,logging-profile 可用于 servlet,但无法用于 JSP。JSP 里的所有日志消息都会进入系统日志上下文。

这是因为被检查的类加载器是 org.apache.jasper.servlet.JasperLoader,其父类加载器在日志上下文里进行了注册。

通过添加选项到日志管理者以递归地检查类加载器的父节点的 LogContext,从而解决了这个问题。
BZ#1071695 - 当 exception stack frame 类查找失败时出现无限递归

JBoss LogManager 用 %E 格式器配置时会输出 JAR 类的来源。如果加载类时出现问题,JBoss Modules 会输出一个警告。在某些情况下,exception 格式器会触发日志管理者加载类和模块输出警告间的无限递归。

JBoss EAP 6.4 已经修复了这个问题,这种情况不会再触发无限递归了。

类加载

BZ#1155823 - MODULES-192 触发软件包证书的 SecurityErrors

在以前的 JBoss EAP 6 版本里,在读取类流前 JarFileResourceLoader 试图获取证书,这会导致证书没有加载。

在多线程并行加载签名类时导致 SecurityError 出现。

在本版本里,JarFileResourceLoader 在读取类流后才获取证书,这样 SecurityError 不会再发生了。
BZ#1172577 - 包含额外的 sun.jdk 依赖关系
在以前的 JBoss EAP 6 版本里,JDK 里的一些类没有通过 sun.jdk 向应用程序开放,而在使用 JDK javax.sql.rowset.RowSetProviderjava.lang.invoke.MethodHandleProxies 并依赖于 sun.jdk 模块时应该这样做。
在这个 JBoss EAP 6 版本里,应用程序将在依赖于 sun.jdk 模块的这些软件包里查找类:
  • com.sun.rowset
  • com.sun.rowset.providers
  • sun.invoke

域管理/安全性

BZ#1150024 - HeaderParser 无法处理 DigestAuthenticator 里的分隔符

以前的 JBoss EAP 6 版本里有一个程序错误,在进行 Digest 验证时没有正确处理头部信息里包含的值里的转义分隔符。

此外,add-user 工具没有正确转义包含反斜杠('\')的用户名。

因此,有效的验证请求会被拒绝。

在本版本里,Digest 验证里重构了对头部信息的解析,add-user 现在可以正确地转义用户名的反斜杠,从而让验证可以正常进行。
BZ#1153854 - 管理接口:SSL 配置不允许禁用协议

在以前的 JBoss EAP 6 版本里,我们发现有可能指定创建 SSLContext 时请求的协议,而当配置安全区以提供 SSLContext 时不可能指定协议或底层 SSLEngine 支持的加密套件。

这意味着不可能选择一组协议和加密套件以用于 SSL 连接。

在这个版本里,用户可以在安全区定义里指定一系列启用的协议和加密套件。这将匹配被支持的协议和配置底层 SSLEngine 的加密套件。

此外,如果没有指定配置,启用的协议默认将是 TLSv1、TLSv1.1 和 TLSv1.2。SSLv3 和更早的版本默认不再启用,而且可能进一步配置协议和加密套件。

群集

BZ#993041 - org.jboss.as.web.session.ClusteredSession.access 里的 RuntimeException

在以前的 JBoss EAP 6 里,某些情况下当分布式 Web 会话被访问时,如果另外一个节点突然离开群集,获取锁可能失败。这种情况发生时会导致这样的异常信息:
RuntimeException: JBAS018060: Exception acquiring ownership of <session-id>
Copy to Clipboard Toggle word wrap

这个问题的根本原因是锁的获取并没有考虑群集节点可能恰好同时离开群集,导致获取锁失败。

这个版本已经解决了这个问题,不会再抛出异常了。

安全性

BZ#1150020 - add-user 工具没有正确将字符转义

JBoss EAP 6 的 add-user 工具将所有值迭代在属性文件里并转义所有的特殊字符。

在以前的版本里,一个字符检查的错误导致第一次出现的 '=' 字符被转义。如果用户名包含了更多的 '=' 字符,它会被错误地转义,导致生成的属性文件不可用。

本版本纠正了特殊字符的处理以处理所有的 '=' 字符以及包含多个 '=' 字符的用户名并正确地写入到属性文件。
BZ#979369 - 通过程序调用 login() 时 HttpSession 的创建具有不同的行为

在以前的 JBoss EAP 6 版本里,当使用下列程序登录时 HttpSession 的创建行为会不一致:
  • 不使用 SSO:调用 login() 方法时不会创建会话 - 也就是随后的请求无法被验证;
  • 使用非群集的 SSO:调用 login() 方法时会创建会话,但第一次调用不会设置验证状态 - 也就是随后的请求无法被验证;用户在第二次调用 login() 方法后被验证,因为会话已经存在了。
  • 使用群集 SSO:当验证 login() 方法和后续的请求时创建会话
本版本的 JBoss EAP 6 已经修复了这个问题,org.apache.catalina.authenticator.AuthenticatorBase.ALWAYS_USE_SESSION 类有一个新的选项,总是创建会话。
BZ#949737 - NegotiationAuthenticator valve 中断了会话复制

以前的 JBoss EAP 版本没有包含和 JBoss EAP 5 一样的定义全局验证机制的选项。为了突破这个限制,可以手动添加 Valve 到受影响的部署的 jboss-web.xml 里,从而启用 SPNEGO 验证。

这样做到后果是对 Valve 的调用很早,领先于负责群集的 Valve。这意味着 JBoss Negotiation Valve 会创建一个新的 HTTP 会话,而群集 Valve 不会接收任何关于会话生命周期的通知。所以,群集 Valve 需要的会话不会进入群集,从而影响了复制。

本版本的 JBoss EAP 6 现在支持定义全局验证机制。这个方法不需要手动添加 Valve 到 Web 应用程序的 jboss-web.xml

SPNEGO 验证 Valve 将在可以在群集 Valve 之后调用,所以群集 Valve 可以接收到关于会话生命周期的通知并可以正确地复制会话。

域管理、对 IPv6 的支持

BZ#1149612 - 用户可以在 IPv4 环境里使用 any-ipv6-address 接口

在以前的 JBoss EAP 6 版本里,检查/拒绝接口的 any-ipv6-address 配置和 java.net.preferIPv4Stack=true 系统属性的逻辑是在安装网络接口服务而不是等到服务启动时完成的。

因此,检查可能运行在不需要接口服务的主机控制器进程上,如果实际使用接口配置的服务器进程没有设置 java.net.preferIPv4Stack=true,就会导致虚假的故障。

在这个版本里,直至接口服务已启动才会进行一致性检查,确保了只有该进程实际上使用了服务才会设置。

现在,没有设置 java.net.preferIPv4Stack=true 的服务器可以在其中一个接口的配置里使用 any-ipv6-address,即使域控制器或自己的主机控制器没有设置 java.net.preferIPv4Stack=true

mod_cluster

BZ#1083563 - 因为部署缺失对 mod_cluster 服务(JDK8)的依赖关系,Mod_cluster 消耗待定的请求会失败。

本版本解决了这个问题,mod_cluster 子系统可以正常消耗待定的请求。
BZ#1044879 - 如果 "Balancer" 名称包含了大写字母,modcluster 不会保留 sticky sessions。

在以前的 JBoss EAP 6 版本里,如果负载平衡器的名称里包含了大写字母,modcluster 模块不会保留 sticky session。

通过检验负载平衡器名称的大小写,本版本解决了这个问题。

RESTEasy

BZ#1090487 - 为了应用实体扩展限制,默认会打开 Resteasy 安全处理。

我们创建了两个新的 RESTEasy 参数在处理 org.w3c.dom.Document 文档时提高安全性。两者都是 context-param 且在应用程序的 web.xml 文件里配置。

Name: resteasy.document.secure.processing.feature Default value: true Description:在org.w3c.dom.Document 文档和 JAXB 对象表示形式里强制使用安全约束。

Name: resteasy.document.secure.disableDTDs Default value: true Description:在 org.w3c.dom.Document 文档和 JAXB 对象表示形式里禁用 DTD。

请注意 EAP 6.4.0 里的 Xerces 2.9.1.redhat-6 不支持 Max 属性限制。
BZ#1088956 - Windows 上的命名空间测试抛出 MalformedByteSequenceException

在以前的 JBoss EAP 6 版本里,当在客户请求的主体里没有指定编码时,RESTeasy 会返回以服务器的编码而不是以原始请求编码为格式的响应。

通过设置 UTF-8 为默认的编码,本版本已经解决了这个问题。
BZ#899666 - RESTEasy: 空的 cfg. param javax.ws.rs.Application 导致异常

WEB-INF/web.xml 文件里的 javax.ws.rs.Application 配置选项为空时,以前版本的 JBoss EAP 6 附带的 RESTEasy 组件抛出 java.lang.StringIndexOutOfBoundsException: String index out of range: 0 错误。

通过升级 RESTeasy 组件,这个版本已经解决了这个问题。

安装程序

BZ#977805 - Solaris 里无法从启动菜单里启动 JBoss 管理控制台

由于 Solaris 上 gvfs-open 的问题,当 JBoss EAP 6 使用安装程序安装后,Solaris 上的 JBoss EAP 6 管理控制台的启动菜单快捷键无法使用。

从 JBoss EAP 6.4 开始,对于用安装程序安装的 JBoss EAP 6,Solaris 上的管理控制台的启动菜单快捷键不会被创建。

管理控制台可以直接通过浏览器打开。如果配置了默认的端口,管理控制台的 URL 是:http://localhost:8080/console(独立模式)、http://localhost:9990/console(域模式)。
BZ#1032892 - 对于 Windows 里以盘符开始的路径无法使用 Tab 填充
在以前的 JBoss EAP 6 版本里,Windows 服务器上的控制台安装程序无法对用驱动器字母开始的目录路径使用 Tab 完成功能。
当输入以盘符开始的路径时,例如 `C:\`,并按 +Tab+ 键,不会显示任何东西。而在这种情况下,本应该显示该目录的内容。
这个版本已经解决了这个问题, 现在 tab-completion 可以按预期那样工作了。

CDI/Weld、事务管理者

BZ#1098127 - 在使用 JTS 的远程 EJB 调用 CDI 事务性 observer 方法时出现 "Failure while notifying an observer of event"

在以前的 JBoss EAP 6 版本里,使用 JTS 事务的远程 EJB 客户触发 CDI 事件会导致对服务器上的事务性 Observer 的调用失败。

我们在 Weld 集成代码里修改了事务同步回调方法的 JNDI 命名空间选择,从而解决了这个问题。

现在分布式事务场景里可以正确调用事务性 Observer 了。

Naming

BZ#1131626 - 当查找远程队列时看到 ERROR: remote lookup Channel end notification received, closing channel Channel ID

在以前的 JBoss EAP 6 里,当在 EJB 里对远程队列执行查找时可能遇到错误,即使操作成功完成。

本版本通过升级 jboss-remote-naming 解决了这个问题。

域管理、测试套件

BZ#1078062 - ManagementClientContentTestCase 有时候会有问题(主和从控制器的 JDK 不一致时)

在以前的 JBoss EAP 6 里,对于域里同进程上的 management-client-content=rollout-plans 资源,用于 management-client-content 存储机制的表返回不同的 'hash' 属性值。

在 JBoss EAP 6.4 里,按照存储 management-client-content 的顺序更新表,这个问题已被修复。对于域里所有的进程,management-client-content=rollout-plans 资源的 'hash' 属性返回相同的值。

JCA

BZ#1107120 - 在 EAP 6.x 里部署 MySQL JDBC 驱动失败

以前版本的 JBoss EAP 6 的一个程序错误在某些情况下会阻止 MySQL JDBC 驱动的部署。

部署会失败并通知用户该部署已存在。尝试删除现有部署也会失败。

这个版本已经解决了这个问题, 现在驱动部署可正常进行了。

Web 控制台 - UX

BZ#1016546 - RBAC: [可用性] 尝试配置 Auditor 角色为 Administrator 时显示不清楚的错误消息

在以前的 JBoss EAP 6 版本里,如果用户试图执行他们并没有权限执行的操作,他们会看到下列错误信息:

You don't have the permissions to access this resource!

这样的信息会让用户感到困惑,因为他们只是执行某个操作,而不是访问某个资源。现在的版本里这个错误信息是:

You don't have the permissions to perform this operation!

安全性、Web

BZ#952518 - Servlet 里 init() 和 destroy() 方法方法未使用 run-as

以前的 JBoss EAP 6 里存在一个问题,run-as 标识符未用于 Servlet.init(),这和 Java Servlet 2.4 规格是矛盾的。

这是因为与 JBoss EAP 5 一样,JBoss EAP 6 里不存在 RunAsListener 引起的。

这个版本已经解决了这个问题,产品会遵循对应的规格。

脚本、命令和安全性

BZ#901193 - add-user 检查没有国际化设置,但提示却有。

JBoss EAP 6 里的 add-user 工具根据当前地区设置提示用户确认要进行的动作。当用户输入和不同的翻译进行比较时,用户输入会转换成小写字母而翻译的值却不会进行转换。

这意味着 add-user 工具在进行比较时无法确定用户已经选择了哪个选项,且会报告错误并通知用户还未选择有效的值。

在这个版本里,进行比较的用户输入和翻译值在比较前都转换成小写字母。通过 add-user 工具里的确认对话框可以正确接受已国际化的响应。

对 IPv6 的支持

BZ#900564 - 日志条目里的 IPv6 地址格式错误

以前的 JBoss EAP 6 版本里登记的 IPv6 地址不会按要求包括在方括号里。在这个版本里,我们纠正了对 IPv6 地址的处理,现在日志里的地址包括在方括号 里。

Apache 服务器 (httpd) 和连接器

BZ#1188769 - 在 Windows 上 snmpd.conf 不会被加载,除非放入 conf 目录里。

我们发现以前的 JBoss EAP 6 版本如果在 Windows 上运行, SNMPConf 配置会被忽略。

在这个版本里,我们在 etc/httpd/conf 里添加了 snmpd.conf.sample 配置,从而解决了这个问题。

PicketLink

BZ#1170792 - SAML11TokenProvider 和 SAML20TokenProvider 没有考虑 CLOCK_SKEW
在以前的 JBoss EAP 6 版本里,在检验令牌时 `SAML11TokenProvider` 和 `SAML20TokenProvider` 没有考虑 `CLOCK_SKEW` 属性。
因此,如果检验主机和 STS 的时钟没有同步,验证会失败。
在这个版本里,`SAML11TokenProvider` 和 `SAML20TokenProvider` 会在检验令牌时考虑 `CLOCK_SKEW`。检验主机和 STS 的时钟在 `CLOCK_SKEW`限制内可以偏离,而验证仍会成功。

CLI

BZ#1139515 - 引号不配对的 CLI 部署命令导致 StringIndexOutOfBoundsException
在 Windows 里运行以前的 JBoss EAP 6 版本时,如果使用 jboss-cli.bat 部署应用程序并试图用 Tab 完成引号(")时会抛出异常。
接受这个动作会导致下列错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Copy to Clipboard Toggle word wrap
在本版本里,不会再抛出异常。

Hibernate

BZ#1132207 - HHH-9389 表映射 @ElementCollection 的外键的列名使用实体类名而不是指定的实体名
在以前的 JBoss EAP 6 版本里,在计算用于联合实体表和表映射 @ElementCollection 属性的外键列的前缀时,@Entity(name="...") 的 name 属性会被忽略。
由此,计算的外键前缀是实体类名而不是在 @Entity 注解里提供的名称。
在这个版本里,@Entity 注解的 name 属性用于计算外键的名称前缀。例如, ``@Entity(name="prod")` public class Product 会导致外键(@ElementCollection 表)的前缀为 'prod' 而不是'Product'。

RPM

BZ#1124516 - RPM 里缺少 snmpd.conf.sample 文件

下列 'mod_snmp' RPM 版本里缺失了 'httpd/conf.d/snmpd/snmpd.conf.sample' 文件:
  • mod_snmp-2.4.1-7.GA.ep6.el5.i386.rpm
  • mod_snmp-2.4.1-7.GA.ep6.el5.x86_64.rpm
  • mod_snmp-2.4.1-8.GA.ep6.el6.i386.rpm
  • mod_snmp-2.4.1-8.GA.ep6.el6.x86_64.rpm
  • mod_snmp-2.4.1-9.GA.ep6.el7.x86_64.rpm

这个版本已经解决了这个问题。
Expand
表 1. 其他已解决的问题
BZ#1187027: 舍弃数据源的 :enable / :disable 操作
BZ#1168836: 在 JBoss EAP 6.4 里向后移植 JBTM-2279
BZ#1152477: @RolesAllowed 注解无法用于 EJB 里的普通类型
BZ#1151526: 对于 HTTP 400,SAAJ SOAPConnection 没有返回 SoapFault
BZ#1148728: remote-outbound-connection 里用户名的属性替换无法工作
BZ#1147715: 只有需要时才使用 JCA XidWrapper
BZ#1139102: node-identifier 的默认值使用了无效的破折号 '-'
BZ#1138595: 无法获得 JSR77 MBean 的实现类名
BZ#1132207: 表映射 @ElementCollection 的外键的列名使用实体类名而不是指定的实体名
BZ#1127999: 由于不区分大小写,JBOSS JSP 类加载出现问题。
BZ#1127329: 无效的布尔值被设置为 'false' 而不是 null
BZ#1127318: JAXB Unmarshaller 设置错误的元素为 nil
BZ#1104691: 未正确处理托管的页面(未考虑 JSP 头部信息,保存为文本)
BZ#1103735: JBossCachedAuthenticationManager 里出现 Classloader 泄露
BZ#1098074: AccountChooserValve 的 AccountIDPMapProvider 参数被忽略
BZ#1085500: JBoss Negotiation 应该回退至表单验证而不是返回 401
BZ#1064217: SAML Assertion 解析 - 空的 AttributeValue 导致异常抛出
BZ#1062104: JAAS 登录模块的 logout() 方法没有用 cache-type="infinispan" 进行调用
BZ#1062101: JAAS 登录模块的 logout() 方法使用了 cache-type 进行调用
BZ#1057835: JBoss EAP6 无法解析 2.0 版本的 ejb-jar.xml
BZ#1054556: 即使用户/密码无效,AuditProvider 也会提及 "[Success]"。
BZ#1024239: connection-properties=hoge:remove, :disable 和数据源的 :remove 行为异常
BZ#1018026: 从已停止的服务器卸载应用程序时,从 domain/servers/serverName/data/content 文件夹删除内容文件失败。
BZ#900984: UserTransaction 上设置的事务超时值会泄露给线程且不会被清除
BZ#1149020: EJB Compression 缺失了服务器端的处理程序
BZ#1090406: 当设置事务子系统的属性 process-id-uuid 为 false 时服务器无法启动
BZ#1080140: 在数据库连接恢复后 JTS 事务日志的类型 PREPARED 没有修改为 HEURISTIC
BZ#1080035: 在 JTS 上运行时 Oracle 数据库连接失败时的恢复不一致
BZ#1001909: 最后一个资源没有在其他资源前提交
BZ#1188643: PicketLink 抛出 java.lang.RuntimeException: PLFED000092: Null Value: Destination is null
BZ#1188642: SAML11TokenProvider 和 SAML20TokenProvider 没有考虑 CLOCK_SKEW
BZ#1187026: 舍弃-ds.xml 部署
BZ#1172419: EAP6 无法使用端口 > 32767
BZ#1171863: 向后移植 WFLY-4140: 在某些情况下,如 ID 不等于 archive_name,resource-adapter 的 activate 方法会失败
BZ#1170359: InitialContext 用更常用的 NamingException 重新包裹专有的 NamingExceptions
BZ#1163646: 设置 "org.jboss.as.jaxrs.enableSpringIntegration" 为 "true" 导致 JaxrsSpringProcessor 抛出 NullPointerException
BZ#1158498: 无法使用 Entity Manager 启用 NamingStrategyDelegator 实现
BZ#1155815: 为零的队列导致 java.lang.ClassCastException
BZ#1154936: 在 org.apache.cxf 里添加可选的 fastinfoset 依赖关系
BZ#1148603: Hibernate AbstractCollectionPersister 的 processQueuedOps 方法调用了一个已舍弃的方法,这对性能有负面影响。
BZ#1147412: 如果使用了最大数量的连接,数据源在删除或禁用时将被重新创建。
BZ#1140278: Logging 应用程序约束不允许 Deployer 在 Web 控制台里修改日志
BZ#1132188: 当启用了数据源失效切换时 connection-url 里最后一个 URL 无法运行预填充
BZ#1131691: AS 日志里的 JBoss Remoting 版本(未知)
BZ#1131612: PickletLink IdP 过滤器会吞没其他过滤器添加到响应里的 cookie
BZ#1131225: 当使用无效的 Kerberos 令牌时回退至 FORM 验证
BZ#1130863: 某些区域设置会导致控制台的按钮消失并抛出错误
BZ#1128278: 有些情况下没有重用 HQL FromElement 会导致额外的联合
BZ#1125004: 使用专门的密钥库密码/ salt / 迭代计数组合时 vault.sh / VaultSession 运行失败
BZ#1124086: 如果指定了不同的别名,Vault 应该抛出异常。
BZ#1117364: 在 mod_cluster 配置里设置 "Socket Timeout" 或 "Stop Context Timeout" 为 0 会产生 "Unknown error"
BZ#1115650: 即使调用 "javax.naming.InitialContext#close()",jboss-remote-naming 线程也不会关闭。
BZ#1192088:为 jboss 用户保留静态的 gid/uid

3.2. 已知问题

JSF

BZ#1096905 - EAP 6.2 里切换到 JSF 1.2 时 WeldApplicationFactory 上出现 InstantiationException

JBoss EAP 6 允许用户通过部署捆绑的描述符选择部署的 JSF 版本。

然而,当部署也使用 CDI 时,它目前无法正确地工作。现在,如果两个不同的部署也使用 CDI,它们使用不同的 JSF 版本是不可能的。

当进行尝试时,异常将被抛出且部署失败并带有下列错误信息:
java.lang.InstantiationException: org.jboss.as.weld.webtier.jsf.WeldApplicationFactory
Copy to Clipboard Toggle word wrap

虽然JSF 1.2 和 CDI 的一起使用并没有官方支持 ,但是由于 JSF 1.2 是 EE5 的技术,而 CDI 是 EE6 的技术,采用下列变通方法,所有部署仍可能将 JSF 1.2 和 CDI 一起使用:
  1. 在 jboss-cli 里执行下列命令将 JSF 1.2 设置为 EAP 里的默认版本:/subsystem=jsf/:write-attribute(name=default-jsf-impl-slot,value=1.2)
  2. 通过修改 /modules/system/layers/base/org/jboss/weld/core/main/module.xml 和 `/modules/system/layers/base/org/jboss/as/weld/main/module.xml 里的 <module name="javax.faces.api"/> 行为 <module name="javax.faces.api" slot="1.2" /> 为 Weld 模块配置 JSF 1.2 依赖关系。
  3. 重启服务器。

EJB

BZ#1188420 - EJB Asynchronous pass POJO by reference 在远程调用里导致 ClassCastException 错误
在这个版本里,客户通过 Remote 接口对相同 JVM 里的 EJB 的异步 EJB 调用会失败,并抛出 ClassCastException。
这是因为请求/响应还没被编码,而客户和 EJB 没有使用相同的类加载器。
我们期望在下一个版本里解决这个问题。既然这是一个 Remote 接口调用,请求/响应将被编码,允许客户和 EJB 使用不同的类加载器,这样就不会出现 ClassCastException 了。
BZ#1020074 - EJB 客户不会试图重新连接任何接收者,直至所有接收者都无法连接。

这个版本的 JBoss EAP 6 的 EJB 组件里有一个问题。

当连接失败时,EJB 客户应该试图重新连接接收者。而现在并没有尝试直至没有可用的接收者。

因此,在负载平衡配置里使用这个方法效率很低。我们仍在调查这个问题。
BZ#952746 - 修复在调用远程 EJB 资源时事务恢复操作失败的问题

在这个版本的 JBoss EAP 6 里,如果调用了可能已经崩溃的远程 EJB 资源,事务恢复操作可能会失败。

这是由于服务器和客户间的连接断开了(特别是当客户崩溃且重启),服务器和客户将不会彼此自动通讯。

在这种情况下,服务器无法知道客户已经重启,意味着 EJB 的事务恢复过程也无法知道要与哪个 EJB 节点通讯。

我们正在调查这个问题并寻求解决方案。
BZ#1036040 - 用 "REQUIRES_NEW" 事务属性调用 EJB 创建了两个事务。

在这个 JBoss EAP 6 版本里,EJB 组件里的一个问题导致事务统计显示错误的已处理事务的数量。

这是因为 CMTTxInterceptorLifecycleCMTTxInterceptor 拦截器在处理 EJB 请求时创建了两个事务。一个是虚拟事务而另外一个用来管理资源。这导致一个 EJB 请求会被统计两次。

这个问题当前还没有变通办法。
BZ#990102 - 并发访问超时 -- 无法在 5000 毫秒内获取锁

这个 JBoss EAP 6 版本带有一个程序错误,当 EJB 客户在 "forwarding" 群集里调用 stateful bean 上的方法时,它可能导致 concurrent access timeout。这个 bean 将调用转发到 "target" 群集里的 stateful bean,然后再转回来。调用是有序的;客户在获得前一个调用的响应前无法调用新的方法。当群集里的其中一个服务器被关闭时,错误就出现了。

Web

BZ#1076439 - IBM JDK(1.7 JDK 和 1.8 JDK)上的重载操作期间 NIO2 连接器没有正确地重载

如果这个版本的 JBoss EAP 6 在 IBM JDK 1.7 或 1.8 上启动并试图重载服务器,下列错误信息将出现在日志里。
ERROR [org.apache.coyote.http11.Http11NioProtocol] (MSC service thread 1-6) JBWEB003043: Error initializing endpoint: java.net.BindException: Address already in use
Copy to Clipboard Toggle word wrap

这个错误是由于 IBM JDK 里的一个问题引起的,它导致 NIO2 连接器没有正确重载,而原来的连接器继续运行。要绕过这个问题,请使用不同的连接器(注意每个连接器都有自己的功能)或不同的 JDK。

我们期望在下一个版本里解决这个问题。
BZ#918130 - JBossWeb 连接器在应用程序部署完成前启动

我们发现 JBossWeb 连接器在启动时有一个时机问题,连接器会在应用程序程序完全部署之前启动并接受请求。

在这些情况下,通过负载平衡器或直接连至 JBoss EAP 的客户连接会返回 404 消息。这个问题影响 JBoss EAP 6.0.1 和更高的版本。

目前还没有变通方法,我们仍在调查这个问题。
BZ-1086399 - 根据 JSR-356,WebSockets 应该支持 CDI。
JBoss EAP 6.4 WebSocket 实现为服务器端点提供了完整的依赖关系注入支持,然而它没有为客户端点提供 CDI 服务。
CDI 支持限于 EE6 平台所要求的,因此,EE7 功能如端点拦截器不被支持。

RPM

Openjdk 软件包在元数据里没有提供 'java'
几个 Openjdk 软件包(1.6.0、1.7.0 和 1.8.0)在 RPM 元数据里没有提供 'java',这会影响到 JBoss EAP 频道里可用的需要 Java 的软件包的兼容性。要绕开这个问题,请在安装上述 Openjdk 软件包之前安装其他在 RPM 元数据里提供 'java' 的软件包。
请参考:

Web 控制台

BZ#1180206 - 如果输入错误的值,无法取消对 wsdl-port 和 wsdl-secure-port 的设置
如果已经设置了 WSDL 属性端口和安全端口,通过控制台将它们重设为 undefined 是不可能的。这些属性的输入字段目前只允许数字值且不会将空字符串作为 undefined 处理
变通办法:使用下列管理 CLI 命令之一来取消设置这些属性:
/subsystem=webservices:undefine-attribute(name=wsdl-port)
Copy to Clipboard Toggle word wrap
/subsystem=webservices:undefine-attribute(name=wsdl-secure-port)
Copy to Clipboard Toggle word wrap
BZ#1014048 - RBAC: 在域模式下登出后再登录不会正确清除 UI

在某些情况下,当登出 Web 控制台时,在登录另外一个用户前控制台将部分地刷新。这会导致“混合”的屏幕内容,有些区域好像还是旧用户登录,而另外一些区域则是新用户登录的样子。

这个问题不是一个安全隐患,不会泄露敏感数据。

变通方法是关闭浏览器窗口(不仅仅是活动的标签页)并以新的用户登录。
BZ#1027586 - RBAC: Web 控制台对应用程序资源的控制过于粗颗粒度

在这个 JBoss EAP 6 版本里,当资源被定义为应用程序资源时,控制台可能不会体现这种定义。这是因为控制台经常在一个视图下对几个资源进行分组。如果相关的资源是可写的,视图里的控件就是可用的。然而,如果其中的任何资源被配置为应用程序资源,相关的控件会保持为禁用的。

目前的变通方法是,如果可能的话,配置所有和子系统相关联的资源类型为应用程序资源。

JMS

BZ#1033008 - 通用 JMS 资源适配器和 EE 规格不兼容 - 当在事务上下文里创建会话时,它*没有*忽略参数。

这个版本的 JBoss EAP 6 的 JMS 组件里有一个问题。

当在事务上下文里创建会话且参数被传递到通用 JMS 资源适配器时,NullPointerException 将会发生。

这是因为尝试处理参数时,Java EE 规格表明它们不会被处理。

我们仍在调查这个问题的根本原因,目前的变通方法是像下面这个例子一样设置会话为有事务的。由此,NPE 不会再发生了。
connection.createSession(true, Session.SESSION_TRANSACTED);
Copy to Clipboard Toggle word wrap

安全性

BZ#1103684 - 无法在数据源间分享标识符安全域

当定义了同一个安全域支持的多个数据源时,这个版本的 JBoss EAP 6 的一个程序错误会导致 javax.resource.ResourceException: No matching credentials in Subject! 错误。

我们正在调查这个问题,期望在以后的版本里解决它。
BZ#1052644 - LdapExtLoginModule 无法找到自定义的 LDAP 套接字工厂

在这个 JBoss EAP 6 版本里,LdapExtLoginModule 没有设置 TCCL 为(可配置)JBoss 模块的类加载器。这个 JBoss 模块将包含一个自定义套接字工厂。

因此,LdapExtLoginModule 无法使用自定义的套接字工厂来创建到 LDAP 服务器的连接。当试图使用自定义套接字工厂和 LdapExtLoginModule 时会抛出 ClassNotFoundException

我们将在下一个版本里解决这个问题。
BZ#1145490 - FIPS 140-2 兼容模式不能在 JDK-8 里无法工作
这个版本的 JBoss EAP 6 有下列 JDK8 问题:
当在 SSL/TLS 协议里使用 RSA 客户密钥交换时,SunJSSE 供应商无法用在 FIPS 140 兼容模式下。这个问题不会影响到 SunJSSE 的默认模式。

域管理

BZ#1015524 - RBAC: 无法部署已经被不同 server-group 作用域的用户部署的相同部署

当启用了基于角色的访问控制时,带有 server-group 作用域角色的管理用户可能无法部署新的部署,错误信息为:
"JBAS014807: Management resource '[(\"deployment\" => \"example.war\")]' not found"
Copy to Clipboard Toggle word wrap

这是因为域里已存在具有相同名称的部署。这是正常的行为。然而,因为管理用户限定在某个服务器组的作用域里,它们无法查看部署是否已存在于另外一个服务器组上。这使得避免这种错误相当困难。

要绕开这个限制,我们推荐给负责添加部署到域里的用户分配无作用域的角色,或者维护一个部署名称列表以避免重复。
BZ#1021607 - RBAC:两种类型的不可寻址性

某些资源对于作用域为服务器组和主机的角色是不可寻址的,目的是提供管理模型的简化视图,从而提高可用性。这和以不可寻址来保护敏感数据的资源是不同的。

对于作用域为服务器组的角色来说,这意味着管理模型的 profile, socket binding group, deployment, deployment override, server group, server configserver 部分里的资源将是不可见的,如果它们和为该角色指定的服务器无关的话。

对于作用域为主机的角色来说,这意味着管理模型的 /host=* 部分里的资源将是不可见的,如果它们和为该角色指定的服务器无关的话。

然而,在某些情况下,这种简化的视图可以隐藏超出用户管理的范围的信息,它可以为用户的一系列动作提供指导。一个例子是 BZ# 1015524

在以后的版本里,这些不可寻址的资源可能会改为可寻址但不可读的。这不会影响服务器的安全性,因为出于安全原因它们是不可寻址的。红帽推荐您不要依赖于资源的不可寻址来隐藏信息,除非这种不可寻址性是在敏感性约束里定义的。

群集

BZ#917635 - 无法加载会话:NullPointerException

这是本版本的 JBoss EAP 6 里的一个已知问题,在某些情况下部署应用程序后它会导致 NullPointerException 并遇到 Failed to load session 信息。

我们期望在下一个版本里解决这个问题。
BZ#959951 - CacheException: java.lang.RuntimeException: Failure to marshal argument(s) at server shutdown

服务器关闭时下列消息会被记录:
CacheException: java.lang.RuntimeException: Failure to marshal argument(s) at server shutdown
Copy to Clipboard Toggle word wrap

这个信息是因为 Infinispan 还不支持干净关闭,可被安全地忽略。我们正在调查这个问题,但目前还没有变通方法。
BZ#901162 - TimeoutException: Unable to acquire lock

这是本版本的 JBoss EAP 6 里的一个已知问题,它在某些情况下会抛出 TimeoutException: Unable to acquire lock

我们期望在以后的版本里解决这个问题。
BZ#900483 - 在 jvm kill 里使用 DIST SYNC 时接收到过时的会话数据

在测试过程中,当某个节点关闭且使用了 DIST SYNCDIST ASYNC 缓存模式时,某些情况下会接收到过时的会话数据。我们仍在调查这个问题。
BZ#900946 - IllegalStateException: Cache is in 'TERMINATED'/'STOPPING' state.

这个 JBoss EAP 6 版本带有一个程序错误,如果在某个节点上卸载应用程序后 5 秒内又部署到群集里的另一个节点上,这个错误可能会导致抛出 IllegalStateException

我们正在调查这个问题,希望在下一个版本里解决它。
BZ#900378 - 带有 SET 复制触发器的 CDI bean 没有复制

由于 Weld 组件里的一个程序错误,setAttribute 方法没有被正确地调用。这导致了带有 SET 复制触发器的 CDI bean 复制失败。

变通方法是使用 SET_AND_NON_PRIMITIVE_GET 触发器。我们将在以后的版本里解决这个问题。
BZ#922699 - IllegalStateException: AtomicMap stored under key X has been concurrently removed!

在偶然的情况下,当过期和钝化的例行处理访问了并删除的会话时 IllegalStateException 会被抛出。这导致异常抛出并登记日志。

这个异常可以忽略。然而,禁用会话钝化可以避免这个问题。

事务管理者

BZ#1039081 - 请从 CLI 删除 "path" and "relative-to" 属性

由于 JBoss EAP 6 里没有包含相关的功能,CLI 的事务子系统没有使用 pathrelative-to 属性 。本版本已舍弃这些属性,且在以后的版本将彻底删除。

JDR

BZ#917683 - Windows 里运行的 JDR 工具生成错误的归档条目名称

我们发现在 Windows 环境里使用 JDR 工具时有一个程序错误。它会将原始 $JBOSS_HOME 目录的最后一个字符附加到归档里创建的 JBOSS_HOME 目录上。

例如,对于原始 JBOSS_HOME 目录 'jboss-eap-6.2',JDR 工具生成一个名为 'JBOSS_HOME2' 的归档目录。

我们正在调查这个错误的原因,目前还没有变通方法。

XML 框架

BZ#1065128 - 处理大型文本节点时出现性能问题

我们在这个版本的 JBoss EAP 6 里发现了一个程序错误,当试图用 Xalan Transformer 转换大型文本节点它会导致性能问题。在使用 Transformer 来转换 StreamSource 为 DOMResult 时,Transformer 的性能会随着字符数据的大小增加而降低。这是一个已知的问题,我们将在以后的版本里解决。

CLI

BZ#1054874 - jboss-cli.sh 对 cygwin 的支持

本版本的 JBoss EAP 6 有一个程序错误,在 Cygwin 环境里使用产品时可能出现问题。

POSIX 和 Microsoft Windows 路径实现的不同可能导致 jboss-cli.sh 脚本里的路径变量无法正常解析。

我们期望在下一个版本里解决这个问题。

Web Services

BZ#1079049 - @SchemaValidation 和 wsrm 1.1 一起使用时出现问题

如果客户发送引用 CreateSequence 的 WS-RM 1.1 消息到利用 WS-RM 和 schema 检验的端点,应用程序将抛出下列错误:
Unmarshalling Error: cvc-elt.1: Cannot find the declaration of element 'CreateSequence'.
Copy to Clipboard Toggle word wrap

org.apache.xerces.impl.xs.XMLSchemaLoader 里的 fGrammerPool 里未找到 CreateSequence,因为 CXF 和 JBossWS 还未完全支持 WS-RM 1.1。
BZ#1074368 - 从 exception 类生成的 Schema 无法识别 @XmlElement 注解

我们在这个 JBoss EAP 6 版本里找到一个程序错误,从 exception 类生成的 Schema 无法识别 @XmlElement 注解。我们将在以后的版本里解决这个问题。

mod_cluster

BZ#900047 - Linux/Unix 上的 SystemMemoryUsageLoadMetric 不正确
SystemMemoryUsageLoadMetric 在 Linux 或 Unix 操作系统上没有显示有用的信息。对于这些系统,HeapMemoryUsageLoadMetric 提供了更多有用的信息。这个问题的解决方案是修改 SystemMemoryUsageLoadMetric 的算法,从 used 数目里减去 buffers/cache 数目。
我们仍在研究最佳的实现办法。
BZ#1085427 - StickySessions 无法用于未启用上下文的 ProxyPass

本版本 JBoss EAP 6 的一个程序错误阻止了 StickySession 用于未启用上下文的 StickySession。我们期望在下一个版本里解决这个问题。
BZ#901170 - 带有 mod_cluster 的 Apache 拒绝启动(manager.node)

客户报告在启用了 User Account Control (UAC) 的 Windows Server 2008 环境里,mod_cluster 要求的文件和目录没有被创建。

因此,Apache httpd 进程在使用 mod_cluster 的 JBoss EAP 6 里无法启动并显示下列错误信息:
[Tue Nov 06 07:55:18 2012] [emerg] create_mem_node C:/tmp/jboss-ews-2.0/var/cache/mod_cluster/manager.node failed: Access is denied.
Configuration Failed
Copy to Clipboard Toggle word wrap

禁用 UAC 可以阻止这个问题的发生。我们得出的结论是这个问题是因为一个 Windows 管理错误引起的。

如果在 MemManagerFile 里设置了正确的路径,这个问题只有当错误地配置用户/服务权限时才会发生。

这个场景最可能发生在域控制的环境里,此时域管理员必须赋予正确的域权限,这样 UAC 才不会将 MemManagerFile 当作安全威胁来对待。

我们不会对这个问题采取进一步的行动。

RESTEasy

BZ#899664 - (EAP 6.4.x) RESTEasy: Boolean 配置参数没有拒绝无效的内容

这个版本的 JBoss EAP 6 的一个程序错误允许设置无效的 Boolean 配置参数。这个行为是计划外的,无效的参数应该被拒绝且应用程序也不应该部署。

我们期望在下一个版本里解决这个问题。

JCA

BZ#1184610 - 启动时注册资源适配器时出现竞争条件
这个 JBoss EAP 版本在注册资源适配器时包含了一个竞争条件,多个线程可能尝试创建资源适配器子系统。
在定义了多个资源适配器时,两个或更多的线程可能试图在内存里创建资源适配器子系统(如在服务器启动时)。只有一个线程可以成功完成这个任务。其他线程将会失败,让一个或多个资源适配器处于未部署的状态。
我们期望在下一个版本里解决这个问题。
Expand
表 2. 其他已知的问题
BZ#1018705: MODCLUSTER000022: Failed to drain n remaining pending requests
BZ#1097211: 在具有 BC 和无限加密的 Solaris11 和 JDK7 上 JBossWS 测试套件运行失败
BZ#1110515: mod_cluster 已连接的计数显示错误的 inflation
BZ#1125934: 当 enable-welcome-root 被设置为 false 时,对于不存在的上下文,access-log 没有记录 404。
BZ#1142804: 使用 REDIRECT binding 的基于 PicketLink SAML 的 SSO:到 SP 的转发是用长度为零的头部信息来发送的。
BZ#1146238: 无法用 JAAS 安全管理接口及 --admin-only 登录管理控制台
BZ#1147352: Overlay 无法用于展开式部署里的 subunits
BZ#1157766: 虚拟主机共享到 mod_proxy 配置的指针,导致:对于选项 0 和 2,CreateBalancers 的行为都一样。
BZ#1166881: 需要更新 SPFilter 来符合 SP Valve 的功能
BZ#1168441: CovalentSNMP/2.3.0, mod_snmp Apache HTTP Server 在 Windows 上没有用示例文件启动
BZ#1184956: EAP 6.3 和 EAP 6.4 间会话消耗的区别
BZ#1185060: Infinispan JAAS 缓存实现在逐出/删除时没有调用 logout
BZ#1193459: 关于 CovalentSNMP/2.3.0, mod_snmp Apache HTTP Server 的 error-info\n 消息
BZ#901164::在失效切换后 Servlet @Inject-ing SFSB 超时/接收过时的数据/丢失会话
BZ#1181036: 运行中的工作节点不应该忽略 HTTPD 端 AdvertiseSecurityKey 的修改 running workers
BZ#1168921:管理 CLI 的 Kerberos 验证无法用于 IBM JDK
BZ#1187092:Remoting EJB 的 Kerberos 验证无法用于 IBM JDK

4. 不受支持和已舍弃的功能

4.1. 不受支持的功能

JBoss EAP 6.4 目前不支持下列功能。
RHEL 7 上 Apache 的 mod_jk 和 mod_cluster
Red Hat 企业版 Linux 7 附带的 Apache HTTP Server 2.4.6 不支持作为 JBoss EAP 6 一部分安装(ZIP 或 RPM 形式)的 mod_clustermod_jk
要使用 mod_cluster 和/或 mod_jk,请安装 JBoss EAP zip 或 RPM 附带的 Apache HTTP Server(版本 2.2.26)。
mod_rt 和 mod_snmp
JBoss EAP 6 的 Apache HTTP 服务器附带的 mod_rt (mod_rt.so) 和 mod_snmp (snmpmonagt.so) 模块不享有支持服务。
您可以在 Enterprise Web Server 2.1 的文档里找到关于对这些模块的支持的更多信息。
fail_on_status 参数不能用于 HP-UX v11.3 hpws httpd B.2.2.15.15。
HP 发布的 HP-UX v11.3 hpws httpd B.2.2.15.15 Apache HTTP Server 没有提供 fail_on_status ProxyPass 参数。因此这个参数无法用于这个 HTTP 服务器里的 mod_cluster 实现。
Red Hat 在企业版 Linux 6 里提供了支持这个参数的 httpd 2.2.15。关于这个补丁的详情,请参阅:http://pkgs.devel.redhat.com/cgit/rpms/httpd/tree/httpd-2.2.15-proxy-failonstatus.patch?h=rhel-6.7&id=295e30e7413300d714cce1d983ecf25ec08ae17c
STOMP 协议和 HornetQ
HornetQ 对 STOMP 协议提供社区级别的支持。这个协议没有接受 Red Hat 的测试,所以不享有 JBoss EAP 的支持服务。
REST 协议和 HornetQ
HornetQ 对 REST 协议提供社区级别的支持。这个协议没有接受 Red Hat 的测试,所以不享有 JBoss EAP 的支持服务。
JDK 6 的 IPv6 限制
下面的 IPv6 限制是 JDK 6 造成的,并非 JBoss EAP 6 的问题。
  • 在 Microsoft Windows 服务器上,JDK 6 只有一部分的 IPv6 实现。这个实现不足以运行 JBoss EAP 6。Microsoft Windows 服务器上对 IPv6 的完整支持要求 JDK 7。
  • 在 RHEL 上,Oracle JDK 6 里的一个程序错误导致在包含 zone-id 的客户(建立连接的网络端点)上指定的任何地址都会失败。要使用 zone-id,要么升级到 JDK 7,要么使用 RHEL 里的 IcedTea/OpenJDK 6,且不要展示这个错误。关于这个错误的更多信息,请参考 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6800096https://issues.jboss.org/browse/JBPAPP-8833
JTA 事务外部的 JPA 2.0 内容填充
扩展持久性上下文(Extended Persistence Contexts,XPC)的填充没有考虑事务的存在,所以 XPC 总是被填充。这种行为不符合 JPA 2.0 规格。我们修改了 XPC 的处理,当没有活动事务时,XPC 的填充将被忽略且被调用的 Bean 将有自己的持久性内容而不是 XPC。
如果您的应用程序希望在 JTA 事务外填充 XPC,您需要考虑是否修改应用程序。关于如何修改应用程序的说明,请参考《JBoss EAP 6 移植指南》。
JBoss EAP 5 提供了一个系统属性(JBPAPP-923.alwaysPropagate)来启用这个行为。这个系统属性在 JBoss EAP 6 里是不可用的。
关于这个决定的更多信息,请参考 https://issues.jboss.org/browse/AS7-1663
PicketLink Management 子系统
JBoss EAP 6 不支持用于标识符管理和联盟的 PicketLink Management 子系统。
STS 客户池
PicketLink Federation 子系统在服务器上提供了一个 STS 客户池。这避免了创建 STS 客户的瓶颈。
需要 STS 客户来获取 SAML 票据的登录模块可以利用客户池。
可以利用 STS 客户池的登录模块:
  • org.picketlink.identity.federation.core.wstrust.auth.STSIssuingLoginModule
  • org.picketlink.identity.federation.core.wstrust.auth.STSValidatingLoginModule
  • org.picketlink.trust.jbossws.jaas.JBWSTokenIssuingLoginModule
通过 initialNumberOfClients 选项可以配置客户池里每个登录模块的的默认客户数量。
STSClientPoolFactory 类 org.picketlink.identity.federation.bindings.stspool.STSClientPoolFactory 为应用程序提供了客户池功能。

使用 STSClientPoolFactory

STS 客户会插入子池且以它们的 configuration 为键。获取 STSClientPool 实例并根据配置初始化子池,可以指定初始的 STS 客户或使用默认的数量。
final STSClientPool pool = STSClientPoolFactory.getPoolInstance();
pool.createPool(20, stsClientConfig);
final STSClient client = pool.getClient(stsClientConfig);
Copy to Clipboard Toggle word wrap
当您使用完客户后,您可以将其退回池里:
pool.returnClient();
Copy to Clipboard Toggle word wrap
根据给定的配置检查子池是否已经存在:
if (! pool.configExists(stsClientConfig) {  
    pool.createPool(stsClientConfig);  
}
Copy to Clipboard Toggle word wrap
启用 PicketLink Federation 子系统时,为某个部署创建的所有客户池都会在卸载过程中自动销毁。如要手动销毁池,可用:
pool.destroyPool(stsClientConfig);
Copy to Clipboard Toggle word wrap
Tanuki Service Wrapper
JBoss EAP 6 不支持 Tanuki Service Wrapper。更多信息请参考 https://issues.jboss.org/browse/JBPAPP-8651
Microsoft SQL Server 2008 上的 XA 恢复
Microsoft SQL Server 2008 R1 里无法使用 XA 恢复。这个功能可以用于 Microsoft SQL Server 2008 R2 SP2。相关详情请参考:
MySQL 上的 XA 恢复
MySQL JDBC 驱动没有正确实现 XA 恢复,当和数据库的连接停止时它会返回不正确的错误代码。
JBoss OSGi
JBoss OSGi 是一个 OSGi 规格的实现,它已从技术预览降为 Unsupported 级别。其他信息请参考 https://access.redhat.com/site/solutions/362814
Quickstarts
JBoss EAP 6.2 里的一些 Quickstarts(helloworld-osgiwicket-warwicket-ear)已从 6.3 版本里删除,6.4 里也不可用。
PicketLink
JBoss EAP 6 不支持 PicketLink IDM(Identity Management,标识符管理)。
Infinispan API
JBoss EAP 6 里不支持直接使用 Infinispan API。Infinispan 被用作 JBoss EAP 6 内部不同群集技术的实现细节。直接使用 Infinispan API 需要订阅 Red Hat JBoss Data Grid 并安装 JBoss Data Grid 软件包。Red Hat JBoss Data Grid 可在 https://access.redhat.com/downloads 里下载。

4.2. 已舍弃的功能

JBoss EAP 6.4 已舍弃了一些功能。这意味着不会再有对这些功能的改进,通常会在下一个主要版本发布时删除这些功能。
Red Hat 将基于标准支持条款继续提供全面的支持和程序错误修复。关于 Red Hat 支持策略的更多信息,请参考 https://access.redhat.com/support/policy/updates/jboss_notes/ 上的文章《Red Hat JBoss Middleware and Red Hat JBoss Operations Network Product Update and Support Policy》
关于已舍弃的功能的详情,请参考 https://access.redhat.com/articles/112673 上的《JBoss Enterprise Application Platform Component Details》

5. 常见问题

问: 这个版本有哪些改动?
问: 完整的文档套件在哪里?
问: 升级说明在哪里?
问: JBoss EAP 是由哪些组件组成的?这个发行版本里的组件版本是什么?
问: 这个产品支持哪些操作系统、Java 虚拟机和数据库服务器?
问: 产品环境支持附带的 H2 数据库吗?
问: JBoss EAP 6.4.0 支持哪些行业标准?
问: 移植到这个版本我可能遇到哪些问题?
问: 本版本包含了哪些组件,它们的版本是什么?
问: 本版本里包含了哪些技术预览?
问: 在哪可以找到关于我的支持合约的更多细节?
问: 我在文档里发现了错误,我怎样报告?
问:
这个版本有哪些改动?
答:
JBoss EAP 6.4.0 包含了许多改进和修复。具体细节请参考《本版本里的修改》章节。
问:
完整的文档套件在哪里?
答:
问:
升级说明在哪里?
答:
升级说明可在《安装指南》里找到。
问:
JBoss EAP 是由哪些组件组成的?这个发行版本里的组件版本是什么?
答:
在这里您可以找到 JBoss EAP 6 组件矩阵:https://access.redhat.com/knowledge/articles/112673
问:
这个产品支持哪些操作系统、Java 虚拟机和数据库服务器?
答:
关于已经针对 JBoss EAP 6.4.0 进行测试和验证的操作系统、Java 虚拟机、数据库服务器和 JDBC 驱动组合的完整列表,请访问:https://access.redhat.com/site/articles/111663
问:
产品环境支持附带的 H2 数据库吗?
答:
否。附带的 H2 数据库仅可用于评估、测试和演示目的。产品环境不支持它。更多信息请参考 https://access.redhat.com/site/solutions/148633
问:
JBoss EAP 6.4.0 支持哪些行业标准?
答:
关于被支持的规格和标准的完整列表,请参考 https://access.redhat.com/site/articles/113373
问:
移植到这个版本我可能遇到哪些问题?
答:
请参考《本版本里的修改》章节来了解本版本和之前版本的区别以及移植时可能导致的问题。
问:
本版本包含了哪些组件,它们的版本是什么?
答:
关于包含的组件的完整列表,请参考 https://access.redhat.com/site/articles/112673
问:
本版本里包含了哪些技术预览?
答:
JBoss EAP 6.4.0 包含了大量的技术预览功能。这些功能是不享有支持服务的,且可能功能不完备,不适合用在产品环境里。这些功能为客户提供了对产品创新的早期介入机会,让他们可以测试功能并在开发阶段提供反馈。
关于本版本里的技术预览的完整列表,请参考 《仅作为技术预览提供的功能》章节。
问:
在哪可以找到关于我的支持合约的更多细节?
问:
我在文档里发现了错误,我怎样报告?
答:
要为这个文档提供反馈,请在 https://bugzilla.redhat.com 报告程序错误并指定产品:JBoss Enterprise Application Platform 6,版本:6.4.0 和组件:Documentation

A. 修订记录

修订历史
修订 6.4.0-19Thu Apr 16 2015Scott Mumford
用于 QE 的更新版本

法律通告

Copyright © 2015 Red Hat, Inc..
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
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.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat