6.2.1 发行注记


JBoss 企业级应用程序平台 6.2

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

Nidhi Chaudhary

Lucas Costi

Russell Dickenson

Sande Gilda

Vikram Goyal

Eamon Logue

Darrin Mison

Scott Mumford

David Ryan

Misty Stanley-Jones

Keerat Verma

Tom Wells

摘要

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

1. 关于红帽 JBoss 企业版应用程序平台 6

红帽 JBoss EAP 6 是一个构建在开放标准上并和 Java EE 6 规格兼容的快速的、安全的、功能强大的中间件平台。它集成 JBoss AS 7 和高可用性的群集、强大的 messaging 系统、分布式缓存以及其他技术来创建稳定、可扩充的和快速的平台。
新的模块化结构允许服务只在需要时才启用,这显著地提高了启动速度。管理控制台和管理命令行接口不需要手动编辑 XML 配置文件,并添加了创建脚本和自动化任务的能力。此外,它也包含了 API 和开发框架以快速开发安全的、强大的和可扩充的 Java EE 应用程序。

2. 关于维护发行版本

为了更好地满足客户的要求,在 6.2 以后 JBoss EAP 6 的小版本(Micro Release)已不再发行并用定期发布(目标是每隔 6 个星期)的补丁更新的方式替代。这些补丁将适用于以 ZIP 和 RPM 方式安装的 JBoss EAP。
  • 对于以 ZIP 文件进行的安装,我们将发布可以应用、删除补丁、查看补丁状态的新的 EAP 功能所管理的累积补丁。
  • 对于以 RPM 方式进行的安装,包含与累积补丁相等内容的 RPM 将通过 RHN 以相同的周期来发布。
每个新的补丁都将包含大量的对客户报告的问题的程序错误修复、以及可能的安全修复。我们期望这些补丁更新将明显减少客户必须管理的单独补丁的数量。
更多的信息请查看下列红帽知识库文章:Maintenance Release Changes in EAP 6.2+ (https://access.redhat.com/site/articles/547663) 和 Updated Patch Management with EAP 6.2+ (https://access.redhat.com/site/articles/547673)。

图 1. JBoss EAP 的补丁时间表

3. 应用补丁更新

应用补丁更新的方法按照安装 JBoss EAP 的方法不同而不同。更多细节,请参考《安装指南》里的 『安装补丁和升级 JBoss EAP』章节。
关于如何将增量补丁应用到本地的 Maven 资料库里,请参考《开发指南》里的『应用补丁到本地 Maven 资料库』章节。

4. 安全顾问

5. 程序错误修复

CDI/Weld

1034776 EJB 商业接口的错误处理(商业方法的定义类不是 EJB 的商业接口)
Session Bean 的 observer 方法检验无法正确检验在具有 super 接口的本地接口上声明的方法。
因此,部署可能失败,错误信息为 `WELD-000088, Observer method must be static or local business method`。当带有 observer 方法的 Session Bean 类继承自不具有 super 接口定义的方法签名的接口时,同时 Session Bean 类扩展了具有方法实现的类时,就会发生这种情况。
我们已经修复了 Weld 的内部 session bean 实现以包含 `checkObserverMethods` 方法里继承的方法。因此,具有上述实现的部署现在可成功部署了。
1051205 在 EAP 6 群集上复制 CDI bean 时抛出 NPE

创建 Bean Deployment Aarchive(BDA)ID 的方法里有一个错误,导致容器在群集节点上不识别 BDA,而阻止了会话复制。我们已经解决了这个错误,容器现在可以在群集节点上识别 BDA ID 了。
1052277 对 org.jboss.weld.exceptions.DeploymentException 的永久修复: WELD-001414 Bean 名称是有歧义的
Bean 名称的歧义性检验在部署里没有用子部署来隔离,在某些情况下这导致了 `DeploymentException`。在这个红帽 JBoss EAP 6 版本里,我们通过升级 Weld 组件解决了这个问题。

类加载

1051335 模块 "org.jboss.log4j.logmanager" 需要依赖 "javax.mail.api" 模块

我们已经确定,虽然在其 module.xml 文件里没有显性说明, log4j.logmanager 模块对 javax.mail.api 有着隐性的依赖关系。如果部署使用了要求 java mail 的 appende 的应用程序,这会导致 ClassNotFoundExceptions。我们现在在模块里指定了可选的依赖关系。这个异常不会再出现了。

域管理

1051189 对于 LDAP 连接,管理控制台登出过程无法完成。

以前的 JBoss EAP 6 版本里出现的一个问题会导致在使用 LDAP 连接时,管理控制台登出过程无法完成。这个版本的 JBoss EAP 6 已经修复了这个问题。

这个问题之所以出现,是因为登出逻辑期望 DIGEST 验证,而 LDAP 没有使用这种方式。

在这个版本里,产品将检测是否在使用 BASIC 验证,如果是则使用 BASIC 验证 challenge 来鼓励浏览器忽略缓存的凭证。

用户现在可以按照期望的那样登出 LDAP 连接到管理控制台了。
1050068 使用按类型分组的目录会导致错误的 logging.properties 文件被使用

当用 directory-grouping="by-type" 来定义服务器时,domain/configuration/logging.properties 文件总会被使用,而它是不正确的配置。这个错误导致了错误的日志设置被使用。其原因是选择属性文件的逻辑是错误的。为了解决这个问题,我们改进了选择属性文件的逻辑,现在在使用 directory-grouping="by-type" 时已经可以使用正确的 logging.properties 文件了。
1052365 无法为 syslog 之上的审计日志配置 FACILITY

在以前的 JBoss EAP 6 版本里,你无法为 syslog 之上的审计日志配置 FACILITY。在这个版本里,我们启用了一个配置选项并可以这样使用:

--- -Dorg.jboss.TEMP.audit.log.facility=N ---

这里的 N 是 RFC-5424 的 6.2.1 章节所提到的 FACILITY。
1047536 管理审计设置:syslog 协议是小写的,而期望的是大写。

管理审计设置里的一个错误导致了当添加 syslog handler 到域控制器时几个实例无法运行。

我们发现 org.jboss.as.domain.management.audit 使用小写字母定义了 UDP 协议(udp),而 enum 使用了大些字母( UPD)。

通过在 org.jboss.as.domain.management.audit 里用大写字母定义协议,我们解决了这个问题。
1051240 LDAP 组加载 - 对于不存在的用户不应该失败

以前的 JBoss EAP 6 版本里遇到的一个问题导致了域模式服务器实例启动失败。

在域模式里,当配置安全域从 LDAP 加载组时,服务器实例将试图加载服务器用户的组信息且会失败。

通过修改代码,我们解决了这个问题,如果远程用户是已验证的服务器,组信息将不会被加载。

当遇到 LDAP 目录里没有找到的用户时,服务器实例不会再启动失败了。
1044394 - 对系统属性的错误处理

这个 JBoss EAP 版本解决了关于不正确处理系统属性的多个问题。进一步的细节请参考相关的 Bugzilla 链接。
1007696 当 runtime-name 和部署名称不一样时 CLI 无法显示应用程序的状态。

当应用程序的 runtime-name 与 EAR 的名称不一致,管理 CLI 将无法显示应用程序的状态,而返回消息 "No metrics available."。其原因是管理 CLI 通过 EAR 名称查询应用程序,既然这个名称和 EAR 名称不一致,就无法找到匹配的应用程序。为了解决这个问题,现在是通过应用程序在运行时进行搜索。因此,CLI 操作可以成功执行了,即使 runtime-name 和 EAR 名称不匹配。
1039699 无法在域里使用具有相同 runtime-name 的部署

用于解析 domain.xml 文件的代码检验了所有的 runtime-name 配置值在域里的所有部署里是唯一的。这是错误的,因为这些值只需要在映射到服务器组的一系列部署里是唯一的就可以了。

在域里使用具有相同 runtime-name 的部署(如相同部署的两个不同版本)在域控制器重启时会导致严重的引导错误,主机控制器日志里会有下面的输出:
JBAS010932: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
…
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1348,9]
…
Message: JBAS014664: An element of this type named foo has already been declared
Copy to Clipboard Toggle word wrap

对 runtime-name 的唯一性的 XML 解析器检验的作用域已被限制到单独的服务器组。我们改进了管理配置模型的解析后的检验以排除标记为禁用的部署。配置里包含两个具有相同 runtime-name 的部署的域控制器在重启后可以工作了。
1039875 在 AbstractBoottimeAddStepHandler 里添加缺失的构造器

我们在上游将新的构造器添加到了 org.jboss.as.controller.AbstractBoottimeAddStepHandler 的超类里,然而它们并没有添加到 handler 自身,这表示类会具有不同的构造器。我们已根据要求添加了这些构造器。
1041330 DelegatingServerInventory 里出现 NPE

在主机控制器启动后立即送往主机控制器的管理请求会失败并抛出类型为 NullPointerException 的异常。这是因为主机控制器能够接收请求和服务器管理系统完全启动之间有一段时间间隔。这段时间通常少于 1 秒,但在期间接收的任何请求都会失败。
1053382 无法为 syslog 之上的审计日志配置 appName

在以前的 JBoss EAP 6 版本里,appName 是不能通过系统属性来配置的。而这种功能是 RFC-5424 规格的要求。现在我们已经在 JBoss EAP 6.2.1 里添加了这种功能,它可以用下列命令行语法实现:

-Dorg.jboss.TEMP.audit.log.appName=APP_NAME
1040480 启用 SecurityManager 时出现问题

这个 JBoss EAP 6 版本解决了 Java Security Manager 引起的的几个问题。进一步的细节请参考相关的 Bugzilla 链接。

HornetQ

HORNETQ-1280 <address-setting/> 的 <expiry-delay/> 使用了绝对值
<address-setting/><expiry-delay/> 指定的值被错误地解释为自 epoch 以来的绝对毫秒数。例如,1000 没有将 expiry-delay 设置为 1000 毫秒,却被计算成 1970-01-01 00:00:01 GMT。这个错误是因为 expiry-delay 没有按预期地工作。为了解决这个问题,我们在计算里添加了当前的时间,参数值现在可以被正确地计算了。
HORNETQ-1281 没有记录任何级别的密码
在某些情况下,SSL 密钥库/信任库密码将记录为 INFO 级别的日志,而在 MDB 的激活配置属性里设置的密码将作为 TRACE 级别的日志记录。
我们重构了代码以避免在任何级别的日志记录密码。
HORNETQ-1284 consumer-max-rate 的行为是不正确的
consumer-max-rate 逻辑没有按预期运行。当指定了 consumer-max-rate 时,这个速度是按照消费者的整个生命周期取平均来计算的。例如,如果 consumer-max-rate 为 10,那么消费者上线时每秒可以消费 10 条消息。举例来说,在消息抵达队列前,如果消费者已经在线 60 秒,那它可以在 1 秒内消费 600 条消息。
consumer-max-rate 现在按秒来计算了,所以在一秒内消费者都不能消费超过 consumer-max-rate 条消息。它不再根据消费的生命周期来进行平均了。
HORNETQ-1290 如果 xaStart 发送超时,事务的服务器状态将会变“脏”。
如果从客户启动 XA 事务的底层操作失败,为这个客户会话保持的服务器端的状态将变“脏”且为以后的操作带来问题。
服务器端会话现在可以正确处理这种超时的操作了。
HORNETQ-1289 在 XmlDataExporter & XmlDataImporter 添加对 JMS 数据的支持
用于日志的 XmlDataExporterXmlDataImporter 工具没有处理 JMS 日志文件里的数据(例如,JMS 目的地和连接工厂绑定)。
我们添加了对导出/导入这个数据的支持。
HORNETQ-1292 当消息被丢弃时,从磁盘删除大型消息。
当 address-full-policy 为 DROP 时,当目的地已满时大型消息不会从磁盘里删除。
当 address-full-policy 为 DROP 时,当目的地已满时大型消息可以从磁盘里删除了。
HORNETQ-1231 listDeliveringdMessagesAsJSON 忽略了被消费的消息
listDeliveringMessagesAsJSON 没有列举所有期望的消息。
listDeliveringMessagesAsJSON 现在可以列出正确的消息了。
HORNETQ-1296 DeliveringCount 和 MessageCount 可能为负值
在某些情况下,当服务器进程被中止时,DeliveringCountMessageCount 属性可能为负值。
在这些情况下,这些属性不会再为负值了。
HORNETQ-1299 在 XML importer 里添加标记来为 AS7/Wildfly 创建额外的 JNDI 条目
JBoss EAP 6 实例对远程客户要求特殊的 JNDI 条目。如果从独立 HornetQ 或以前版本的 EAP 导入数据,那对于远程客户就不会有必要的 JNDI 条目。添加的标记可以通知 importer 自动创建特殊的条目。
在 XML importer 里添加标记以创建必需的 JNDI 条目。
HORNETQ-1303 对与分页的大型消息,XML exporter 抛出 NPE。
当导出分页的大型消息时,XML exporter 将抛出 NullPointerException
XML exporter 现在可以正确处理分页的大型消息了。
HORNETQ-1304 对于具有缺失绑定的分页消息,XML exporter 抛出 NPE。
在导出期间,如果分页消息引用了日志里不再出现的绑定,那么 XML exporter 将抛出 NullPointerException。
XML exporter 现在可以正确处理引用了日志里不再记录的绑定的分页消息了。

IIOP

1036819 Backport JacORB #904 CDRInputStream.read_string 应该正确处理空字符串
NullPointerException 错误地处理了空字符串,错误地将其计算为长度零(0),导致抛出了编码异常。 我们纠正了对空字符串的处理,现在 CDRInputStream.read_string 返回空字符串,避免了之前出现的错误。

JBossWeb

JBWEB-281 genStringAsCharArray 使用的一致性
JSP 配置属性 genStringAsCharArray 在 JBoss Web 里没有一致地命名。这意味着不能启用在 Servlet 代码里使用 char array 类型而不是 String 的功能 。
本版本的 JBoss EAP 6 已经修复了这个问题,这个功能现在可以正确启用了。
JBWEB-282 org.apache.catalina.security.SecurityUtil 里缺乏同步性
org.apache.catalina.security.SecurityUtil 里的 doAsPrivilege 方法没有同步对 HashMap 的访问。当一次部署多个应用程序时,这可能允许对 HashMap 的并行访问而导致高的 CPU 负载。
本版本的 JBoss EAP 6 已经修复了这个问题,SecurityUtil 里的 HashMap 已被线程安全的 ConcurrentHashMap 所替代,从而解决了这个问题。

JCA

1047961 服务器启动时出现竞争条件 - RA 未部署

竞争条件会阻止自定义的 RA 在某些实例里的部署

这个竞争条件是 org.jboss.as.connector.subsystems.resourceadapters.ResourceAdapterService 没有及时启动来部署 RA 而引起的。我们添加了代码以使其不再发生。

JPA

1037636 JBoss AS / Hibernate JPA 集成里内存溢出

这个版本已解决了当检查查询缓存统计时发生的内存溢出。

当每次调用 jboss-cli 来检查查询缓存时就会发生溢出。例如,下列命令会导致溢出:
./jboss-cli.sh --connect --command='/deployment=DeploymentName.ear/subdeployment=MyEjb.jar/subsystem=jpa/hibernate-persistence-unit=DeploymentName.ear\/MyEjb.jar#MyPersistenceUnit:read-children-resources(child-type=query-cache)'
Copy to Clipboard Toggle word wrap

在检查查询缓存统计时使用了无效的查询名,它返回无效的结果并导致每个无效的查询名被添加到 Hibernate 统计里。在检查查询缓存统计时,这个版本不再使用无效的查询名了。

日志

1038862 SEVERE 不是 CLI 里的可用日志级别

在以前的 JBoss EAP 版本里,当使用 CLI 时,SEVERE 不是可用的日志级别。

我们在这个版本里解决了这个问题,现在 SEVERE 被设置成日志级别了。
1031221 当 strong=true 时,LogContext 的 root logger 不会用强子 hash map 进行创建。

在以前的 JBoss EAP 6 版本里,我们发现 logger 有时候过早地进行垃圾收集,导致了 logger 和配置的丢失。例如,如果 logger 分配了一个 appender,当这个 logger 被收集时,新的 logger 将已创建且未附加 appender。在这个版本里,我们修改了 logger 表(map)以使用强(strong)引用而不是弱(weak)引用。这导致 logger 不会被收集且正常运行。因此,自定义的 logger 现在可以正常运行了。
1049074 日志部署单元(DUP)漏掉了类加载器

在以前的 JBoss EAP 版本里,当在部署上使用 per-deployment 日志或 logging-profiles 时,卸载过程不会从 LogContextSelector 里删除类加载器。这是因为 ClassLoaderLogContextSelector 使用了调用栈来确定 LogContext。

在这个版本里,正确的 LogContext 被附加到部署单元。在卸载过程中,LogContext 将使用附加到部署的 LogContext 而不是依赖于部署的类加载器来从选择器里删除。类加载器现在在卸载时可以如期删除了。

Naming

1050184 LDAP: InitialDirContext.search() 方法不接受包含了 URL 的 name 参数

如果第一个 name 字段包含了 URL 和端口号码,搜索 LDAP 服务器将会失败。这个 JBoss EAP 版本包含了对这个问题的修复。

这种格式现在已被支持,不会再抛出异常了。
1061631 InitialContext 没有显示造成异常抛出的原始原因

InitialContext 的实例化可能失败并显示下列信息:
javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory com.sun.jndi.ldap.LdapCtxFactory from classloader ModuleClassLoader for Module "deployment.externalContextBindingTest.jar:main" from Service Module Loader
Copy to Clipboard Toggle word wrap

然而,在这些信息里并没有显示底层的原因,这使得故障解除是不可能的。为了解决这个问题,现在显示了底层的原因。如果再发生这个问题,你可以根据显示的错误信息来找到相关的根本原因。
javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory com.sun.jndi.ldap.LdapCtxFactory from classloader ModuleClassLoader for Module "deployment.externalContextBindingTest.jar:main" from Service Module Loader [Root exception is javax.naming.CommunicationException: 127.0.0.1:10389 [Root exception is java.net.ConnectException: Connection refused]]
Copy to Clipboard Toggle word wrap

Remoting

1032312 可序列化类和不同的不可序列化超类间的协议不兼容性

在以前的 JBoss EAP 版本里,我们发现编码层(marshalling layer)将属于不可序列化 类的多余数据引入到了可序列化流里。这导致了一系列的意外行为,如性能降低、ClassNotFoundException 或不同 JVM 间的其他错误。

本版本按要求截段了多余的数据。这个协议现在可以再次在对相同类具有不同的类层次结构的 JVM 间兼容了。
1030104 运行在 IBM-I 上的 IBM JDK 的 segfault 和其他 XNIO 问题

这个 JBoss EAP 6 版本纠正了运行在 IBM 系统上的应用程序因为 segmentation fault 而运行失败的问题。

这是因为没有为 IBM 操作系统进行优化的 IBM JDK 的 NIO 实现引起的。JBoss EAP 里的 I/O 层试图检测和利用这些实现。然而,在某些操作系统(如 IBM-I),这些实现会导致 segfault。

这个版本里会检测这些操作系统并使用安全 fall-back。这解决了 segmentation fault 问题,应用服务器不会再意外地崩溃了。

安全性

1060972 在 PicketBox 组件里添加了其他的 Java Security Manager 检查
在 PicketBox 组件里添加了其他的 Java Security Manager 检查。

服务器

1050003 Class-Path: . 可能导致 JBAS011046: A component named 'TestBean' is already defined in this module

当部署包含设置 Class-Path. 的 JAR manifest 的 WAR 时,JAR 文件里的注解可能已被处理了两次。这导致部署失败并产生类似这样的错误: JBAS011046: A component named 'TestBean' is already defined in this module

这个版本的 JBoss EAP 6 已经修复了这个问题。当处理 JAR manifest 时,包含 Class-Path: . 的将被检查并忽略。

Web

1050033 WAIT_FOR_BEFORE_START 无法用于 "/" 上下文应用程序

当部署 "/" 上下文应用程序时,Web 连接器里的一个程序错误导致了 WAIT_FOR_BEFORE_START 无法使用。如果WAIT_FOR_BEFORE_START 设置为 / 且部署了一个 "/" 应用程序,连接器根本不会启动。

这个版本的 JBoss EAP 6 已经修复了这个问题。当设置 WAIT_FOR_BEFORE_START/ 并部署 / 上下文应用程序时,连接器现在可以成功启动了。

Web 控制台

1051171 登出受保护的(SSL)管理控制台会重定向到 HTTP 地址。

处理登出重定向的一个程序错误会导致从 SSL 保护的(https)管理控制台登出重定向到不受保护的(http)登出页面。因此, Page Not Found (404) 错误将被显示。

这个版本的 JBoss EAP 6 已经修复了这个问题。登出重定向现在可以保留 web 管理控制台正确的协议和端口了。当登出受保护的管理控制台时会显示受保护的登出页面。

A. 修订历史记录

修订历史
修订 6.2.1-13Thursday Feb 13 2014Russell Dickenson
红帽 JBoss EAP 6.2.1 GA

法律通告

Copyright © 2014 Red Hat, Inc.57.
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

© 2025 Red Hat