6.1.1 发行注记


JBoss 企业级应用程序平台 6.1

JBoss 企业级应用程序平台 6.1.1 里的新功能、已知问题和支持信息。

Darrin Mison

Red Hat Engineering Content Services

摘要

这些发行注记包含了和 JBoss EAP 6.1.1 相关的重要信息。已知的问题、其他资源和目前存在的问题都会在此提及。
本发行注记里的修改是相对于以前的 6.0.1 版本的。

1. 概述

红帽 JBoss EAP 6 是红帽对机构发展和部署企业级应用程序方式的重大修改的响应。因为机构寻求更低的操作成本并减少为新应用程序作市场宣传的时间,JBoss EAP 6 已经为将来的远景、创新的模块化的云就绪架构、强大的管理和自动化、世界级的开发人员生产力进行了重构。
红帽 JBoss EAP 6 通过了 Java EE 6 认证,它功能强大、管理灵活、改进了性能和扩充性,且有许多新功能来提高开发人员的开发能力。有着红帽对于认证和支持的市场领先的声誉,它可以确保你未来的管理和开发需要。

2. 常见问题解答

问: 这个版本里修改了什么?
问: 在哪里可以找到余下的文档?
问: 在哪可以找到升级说明?
问: 这个产品支持哪些操作系统、Java 虚拟机和数据库服务器?
问: 产品环境支持 H2 数据库吗?
问: JBoss EAP 6.1.1 支持哪些工业标准?
问: 移植到这个版本时会遇到什么问题?
问: 本版本包含哪些组件且都是哪些版本?
问: 这个版本包含了哪些技术预览?
问: 在哪我可以找到支持合约的更多细节?
问: 我在这个文档里发现了错误,我应该怎样报告它?
问:
这个版本里修改了什么?
答:
JBoss EAP 6.1.1 包括了许多改进和修复。相关细节请参考 第 7 节 “本版本里的修改ScrLk”
问:
在哪里可以找到余下的文档?
答:
你可以在这里找到完整的l JBoss EAP 6.1 文档:https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/
问:
在哪可以找到升级说明?
答:
你可以在《安装指南》里找到升级说明。请参考文档套件:https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/
问:
这个产品支持哪些操作系统、Java 虚拟机和数据库服务器?
答:
关于 JBoss EAP 6.1.1 已经测试和验证的操作系统、Java 虚拟机、数据库服务器和 JDBC 驱动组合的完整列表,请参考 https://access.redhat.com/site/articles/111663
问:
产品环境支持 H2 数据库吗?
答:
否。附带的 H2 数据库只是用于评估、测试和演示用途。它不是产品环境所支持的配置。更多信息请参考 https://access.redhat.com/site/solutions/148633
问:
JBoss EAP 6.1.1 支持哪些工业标准?
答:
关于它支持的规格和标准,请参考 https://access.redhat.com/site/articles/113373
问:
移植到这个版本时会遇到什么问题?
答:
请阅读 第 7 节 “本版本里的修改ScrLk” 里关于本版本和以前版本的区别,这些区别可能导致在移植应用程序到本版本时出现问题。
问:
本版本包含哪些组件且都是哪些版本?
答:
关于包含的组件的完整列表,请参考 https://access.redhat.com/site/articles/112673
问:
这个版本包含了哪些技术预览?
答:
JBoss EAP 6.1.1 包含了大量的技术预览功能。我们不对技术预览提供支持,它可能功能还不完整,其目的也不是用于产品环境。这些功能提供了对即将实现的产品创新的早期体验,让客户在开发过程中测试功能并提供反馈。
关于本版本里技术预览的完整列表,请参考 第 4 节 “仅作为技术预览提供的功能”
问:
在哪我可以找到支持合约的更多细节?
答:
支持政策的细节位于下列 URL:
问:
我在这个文档里发现了错误,我应该怎样报告它?
答:
要为本文档提供反馈,请在 https://bugzilla.redhat.com 上报告错误并指定产品 JBoss Enterprise Application Platform、版本 6.1.1 和组件 documentation-6.1.1_Release_Notes

3. 新的功能

红帽 JBoss 企业级应用程序平台 6.1.1 里添加了下列新功能。

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

我们已经知道下面的配置和功能有问题,它们只是作为技术预览出现。产品环境里不提供支持。
通过 JGroups 进行 HornetQ 发现
HornetQ 现在提供了通过 UDP 和 JGroups 动态发现服务器连接设置。
使用 JBoss Web 服务的 WS-Trust/STS
JBoss Web 服务现在从底层的 CXF 实现开放了 WS-Trust/STS 能力。
JBoss CLI 的 Silent 模式
用于嵌入 CLI 的进程的 CommandContext API 里添加了一个 'Silent 模式'。
用 JBoss CLI 添加模块
CLI 提供了一个新的命令来添加和删除模块。
Syslog Handler 的配置
EAP 现在为 syslog 协议提供了一个处理程序和配置。
新的 Hibernate 批加载算法
Hibernate 已经在现有的算法里添加了两个批加载算法:Dynamic 和 Padded。
Hibernate - 改进了用于 Non-Mutable 数据的对象引用的二级缓存
Hibernate - 改进和扩展了对字节码的支持
WS-AT/XA 桥
WS-AT/XA 事务桥功能只是作为技术预览提供,产品环境里并不提供支持。
使用 Hibernate Validator 的 RestEasy 检验
RestEasy 现在作为检验提供者以支持 JBoss EAP 6 附带的 Hibernate Validator。
已恢复的 ServiceMBean helper 类
我们已经引入了 org.jboss.as.system-jmx 模块来恢复之前 JBoss EAP 6 版本里协助用户创建 MBean 的 helper 类。
Multi-JSF
这个功能让用户可以用自己的 JSF 实现替换 JBoss EAP 里提供的 JSF 实现。
事务的 JDBC 库
JBoss Transactions can now be configured to use a JDBC database as its store. This is enabled in the Transactions Subsystem by setting the following two attributes using the CLI tool.
  1. 设置 use-jdbc-storetrue
    /subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)
    Copy to Clipboard Toggle word wrap
  2. 设置 jdbc-store-datasource 为要使用的数据源的 JNDI 名称。
    /subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)
    Copy to Clipboard Toggle word wrap
下面是完整的属性集合。
Expand
表 1. 事务 JDBC 库的属性
Property 描述

use-jdbc-store

设置为 "true" 以启用事务的 JDBC 存储。

jdbc-store-datasource

用于存储的 JDBC 数据源的 JNDI 名称。

jdbc-action-store-drop-table

在启动时删除或重新创建 action store 表。可选,默认为“false”。

jdbc-action-store-table-prefix

action store 表名的前缀。可选。

jdbc-communication-store-drop-table

在启动时删除或重新创建 communication store 表。可选,默认为“false”。

jdbc-communication-store-table-prefix

communication store 表名的前缀。可选。

jdbc-state-store-drop-table

在启动时删除或重新创建 state store 表。可选,默认为“false”。

jdbc-state-store-table-prefix

state store 表名的前缀。可选。

5. 不支持的功能

一些用于 JBoss EAP 5 的配置不再被支持。请复核这些配置。
Infinispan API
JBoss EAP 6 不支持直接使用 Infinispan API。Infinispan 用作 JBoss EAP 内部不同的群集技术的实现细节。API 的 module.xml 错误地指出直接使用是可能的。在以后的版本里我们将纠正这个错误。直接使用 Infinispan API 要求订阅 JBoss Data Grid。
JDK 6 的 IPv6 限制
下面的 IPv6 限制是 JDK6 造成的,它们并非 JBoss EAP 6 的缺陷。
  1. 在 Microsoft Windows Server 上,JDK 6 只有部分的 IPv6 实现。这个实现并不足以运行 JBoss EAP 6。Microsoft Windows Server 上完整的 IPv5 要求 JDK 7。
  2. 在红帽企业版 Linux 上,Oracle JDK 6 有一个程序错误,它导致在包含 zone-id 的客户(建立连接的网点)上指定任何地址都会失败。要使用 zone-id,要么升级至 JDK 7,要么使用IcedTea/OpenJDK 6。关于这个程序错误的更多信息,请参考 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6800096 and https://issues.jboss.org/browse/JBPAPP-8833
JTA 事务外部的 JPA 2.0 上下文传播
扩展持久性上下文(Extended Persistence Contexts,XPC)没有考虑事务的存在,XPC 总是会被传播。这个行为不符合 JPA 2.0 规格。我们已经修改了 XPC 的处理,当没有活动的事务时,XPC 的传播将被忽略,被调用的 bean 将有自己的持久性上下文而不是 XPC。
如果你的应用程序期望扩展持久性上下文在 JTA 事务外部被传播,你需要考虑是否需要修改你的应用程序。关于升级应用程序的说明,请参考《JBoss EAP 6 移植指南》。
JBoss EAP 5 提供了一个系统属性(JBPAPP-923.alwaysPropagate)来启用这种行为。但 JBoss EAP 6 里没有这个系统属性。
关于这个决定的更多信息,请参考 https://issues.jboss.org/browse/AS7-1663
PicketLink IDM
JBoss EAP 6 不支持 PicketLink IDM (Identity Management,标识符管理)。
PicketLink STS
JBoss EAP 6 不支持PicketLink STS(Security Token Service,安全令牌服务)。
Tanuki Service Wrapper
JBoss EAP 6 不支持 Tanuki Service Wrapper。更多信息请参考 https://issues.jboss.org/browse/JBPAPP-8651
Microsoft SQL Server 2008 上的 XA 恢复
XA 恢复不能用于 Microsoft SQL Server 2008 R1。这个功能可用于 Microsoft SQL Server 2008 R2 SP2。关于更多的信息,请访问下列 URL:
MySQL 上的 XA 恢复
MySQL JDBC 驱动没有正确实现 XA 恢复。关于更多的信息,请参考 https://issues.jboss.org/browse/JBPAPP-2576
JBoss OSGi
JBoss OSGi 是一个 OSGi 规格的实现,它已经从技术预览降级为不受支持的产品。更多信息请参考 https://access.redhat.com/site/solutions/362814

6. 组件

JBoss EAP 6 组件矩阵位于:https://access.redhat.com/knowledge/articles/112673

7. 本版本里的修改ScrLk

7.1. 程序错误修复

Apache 服务器(httpd)和连接器

987851 - 多个 OCSP 的问题

构建

983322 - org.apache.commons.configuration 缺失 org.apache.commons.beanutils 上的依赖关系

在以前的 JBoss EAP 6 版本里,org.apache.commons.configuration 模块没有声明和 org.apache.commons.beanutils 模块的依赖关系。当使用某些代码路径时,由于缺失了 BeanUtils 类,这导致 Configuration 类抛出 ClassNotFoundException。本版本在 org.apache.commons.configuration 里添加了这个依赖关系,所以代码不会再抛出 ClassNotFoundException 了。
979284 - EAP-6.1 Maven 资料库包含了错误的 jcip-annotations-1.0-redhat-3.pom

在之前的 JBoss EAP 6 版本里,一些用户遇到了 IVY 依赖关系管理者的解析问题。

我们跟踪这个问题到了 /JBOSS_HOME/net/jcip/jcip-annotations/1.0-redhat-3/jcip-annotations-1.0-redhat-3.pom 文件里的一个不正确的 artifact 引用

我们已经纠正了这个错误,受影响的依赖关系可以如期进行解析了。

CLI

961425 - EAP 6.1 CLI 脚本会截掉最后的换行符。

Aesh (Another Extendable Shell) 组件里的一个错误导致 Aesh 没有正确解析数据块。如果数据的最后一个字节是一个换行符(且之前的数据包含换行符),它将截掉且不会被解析。

这个问题会导致用户的自定义 CLI 脚本运行失败。

Aesh 错误已被修复,用户脚本现在可以像之前的 JBoss EAP 6 版本一样正常运行了。

控制台

910718 - 控制台应该正确处理丢失的连接

红帽 JBoss EAP 6 里使用的 Web 管理界面是一个 Google Web Toolkit (GWT) 应用程序,因此它使用 GWT 延迟绑定根据需要加载程序组件。在某些情况下,延迟加载会失败并挂起整个应用程序而不会显示任何和其原因相关的信息。

在这个版本里,对于延迟绑定,我们引入了正确的错误处理。

现在,如果加载应用程序组件出现问题,其抛出的异常将被优雅地处理而 web 控制台则仍可被访问。
908664 - Failover Shutdown 属性对于桥已(Bridge)停用

在以前的 JBoss EAP 6 版本里,设置 HornetQ 子系统的 FAILOVER_ON_SERVER_SHUTDOWN 属性可以通过控制台完成,即使这个属性已标记为废弃,试图设置它会被忽略。本版本已经从控制台删除了这个选项。

域管理

960497 - 'whoami' 操作意外地要求域范围的配置锁

在以前的 JBoss EAP 6 版本里,whoami 操作的元数据没有标记为只读。这意味着执行这个操作将要求域范围的写锁。这可能影响其他任务的执行,在某些情况下会导致 Out of Memory 错误。本版本通过设置 whoami 元数据上的 read-only 标记纠正了这个行为。这使得其他操作可以正常进行了。
968815 - 无法从 CLI 删除 jgroups 子系统,提示 "JBAS014807: Management resource ... not found"

在以前的 JBoss EAP 6 版本里,JGroupsSubsystemRemove 里包含的路径未使用定义服务器配置集的元素进行格式化。

在独立服务器环境里,这不会有什么问题。但在域模式下,当使用下列命令来删除 JGroups 子系统时会出现错误:

[domain@localhost:9999 /] /profile=test/subsystem=jgroups:remove()

这个命令会产生下列错误: "JBAS014807: Management resource [(\"subsystem\" ⇒ \"jgroups\")] not found"

本版本包含了 PathAddress 里缺失的 profile 元素,用户现在可以使用 CLI 命令来删除 JGroups 子系统了。

EE

978603 - jboss-invocation 代理里的可能出现的冲突导致了 initializer 里的 NPE

在以前的 JBoss EAP 6 版本里,jboss-invocation 使用一个 ThreadLocal 传递信息给代理的静态初始器。由此,如果其他线程试图在定义了代理后立即使用代理,其时间窗口会很短,这个线程将调用静态初始器,且初始器期待的 ThreadLocal 数据就不会是最新的,从而导致了 NullPointerException。

本版本已经解决了这个问题,NPE 不会再出现了。

EJB

956227 - java.lang.ArrayIndexOutOfBoundsException

在以前的 JBoss EAP 6 里,调用远程服务器上的 EJB 而节点标识符超过 9 个字符时会出现问题。这会抛出 ArrayIndexOutOfBoundsException

我们在 EJB 客户库里修复了这个问题,它在解析节点标识符时可以正确地构建 XID 了。由此,对远程服务器上的 EJB 进行调用不会由于节点标识符过长而导致异常抛出了。
910193 - EJB Timer 服务为所有不带有定时器的 EJB 创建了空的目录

在以前的 JBoss EAP 6 版本里,我们发现系统为每个有资格带有 Timer 服务的 Bean 都创建了 EJB Timer 服务,而不是仅限于实际上在使用定时器的 Bean。由此,这个服务在启动时将创建不必要的目录来存储定时器数据。

这个问题已得到了解决,Timer 服务现在只为具有 timeout 或 schedule 方法的 bean 启动。其他 EJB 使用非功能性的 Timer 服务,仍可以在 JNDI(按照 Java EE 规格)里进行查找,但不会调度定时器(因为 EJB 没有 timeout 方法)。
909804 - EJB 未接收到客户本地传输的上下文数据

在以前的 JBoss EAP 6 版本里,当调用部署在和调用者相同的服务器实例上的 Bean 的远程 EJB 接口时,"LocalEJBReceiver" 被用来处理这个调用。如果 EJB 客户拦截器用在这些实例里以传递某些调用数据,这些数据不会被传递到目标 EJB 或适用于这个 EJB 的任何拦截器(服务器端)。本版本包含了一个补丁,它解决了这个问题,所有数据都会正确地进行传递。
950864 - 如果删除 SFSB,Sporadiacal 会抛出 NullPointerException。
983324 - 在启动时 在EJBClientContext 里看到 ConcurrentModificationException
981174 - 使用 JTS 事务时抛出 javax.transaction.xa.XAException
959236 - 对标记为 @Clustered 的 SLSB 的第一次远程调用会挂起

这是 JBoss EAP 6 里的一个问题,当进行 EJB 调用而和群集服务器交互时,客户可能会挂起。

服务器在构造 EJBClientContext 时可能出现这个问题,因为它会在一个线程里发送群集拓扑给客户,而另一个线程则继续构造 EJBClientContext。这样可能导致死锁和客户挂起,而在客户被终止后,服务器的关闭也会挂起。

我们在 EJBClientContext 库里通过确保内部实现代码的路径不造成这样的死锁,从而解决了这个问题。

Hibernate

981720 - 升级至 Hibernate 4.2.0.SP1

HornetQ

959789 - HQ 核心桥没有失效切换

在之前的 JBoss EAP 6 版本里,当主HornetQ 服务器不可用时,HornetQ 核心桥服务器无法正确地失效切换至备份的 HornetQ 服务器。因为 HornetQ 核心桥服务器会试图连接其他服务器节点而不是正确的备份服务器,从而出现了这个问题。

本版本里已修复了这个问题,当主HornetQ 服务器不可用时,现在 HornetQ 核心桥服务器总是试图重新连接备份服务器。
963215 - JMS 桥没有进行失效切换
986362 - 由于 ironjacamar 调用了 HornetQResourceAdapter 里不被支持的方法,Inflow XA 事务恢复失败。

JBoss EAP 6 里存在一个问题,在 HornetQ 事务的恢复过程中,虽然事务可以正确完成,但事务管理者仍会输出错误信息到日志里。

因为 JCA 适配器(IronJacamar) 将向 MDB 资源适配器请求 Inflow XID,从而导致了这个问题。HornetQ 会在事务管理者里注册它自己,由此 HornetQ 会抛出一个关于扰乱 IronJacamar 恢复机制的异常。

由此事务管理者上会产生可忽略的警告信息,例如:
ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryInflowImpl] (Periodic Recovery) IJ000902: Error
during inflow crash recovery for 'org.hornetq.ra.HornetQResourceAdapter'
(org.hornetq.ra.inflow.HornetQActivationSpec(ra=org.hornetq.ra.HornetQResourceAdapter@4f02d3d2
destination=jms/queue/InQueue destinationType=javax.jms.Queue ack=Auto-acknowledge durable=false clientID=null user=null
maxSession=15)): javax.resource.ResourceException: Unsupported
    at org.hornetq.ra.HornetQResourceAdapter.getXAResources(HornetQResourceAdapter.java:204)
Copy to Clipboard Toggle word wrap

通过不要返回空的队列给 IronJacamar 而不是抛出 Unsupported 异常可以解决这个问题。现在,事务将可以完成事务管理者的恢复过程而不会产生可忽略的警告信息。
991049 - 当发生 TX 恢复时使用了不正确的日志级别

安装程序

977736 - 未安装 Appclient 时,其启动脚本和配置文件也不应该被安装。

When using the installer for JBoss EAP 6, if the
AppClient+ check box on the Pack Installation screen was cleared, AppClient files would still be installed.

This issue with the installer has been fixed in this release of JBoss EAP 6 so that AppClient files will only be installed if the
AppClient+ check box is selected.
977717 - 对于某些语言,使用 Alt 的快捷键无法工作。

以前的 JBoss EAP 6 里有一个问题,对于某些语言,使用 Alt 的快捷键无法工作。

这是因为一些按钮标签的起始字符(快捷键)和其他按钮的冲突。

For example: The Spanish button for
Next is
Siguiente , and
Cancel is
Salir . Both Spanish buttons would be displayed with an underlined S, indicating a keyboard combination of
Alt+S . However that keyboard combination would only the trigger
Salir ( Cancel ) button, and there would be no keyboard combination that would trigger the
Siguiente ( Next) button.

在这个版本的 JBoss EAP 6 里,安装程序的每个步骤里的按钮都有唯一的下划线字母,指示不同的快捷键。
977822 - 在 HP-UX 上没有安装 natives 的选项

当在带有 64 位 JVM 的 Hewlett-Packard HP-UX 上运行基于文本的安装程序时,native 组件未作为安装选项提供。其原因是安装程序的其中一个配置文件里缺失了对 HP-UX 64 位 native 组件的引用。这个问题已被解决,不管是使用 32 还是 64 位的 JVM,基于文本的安装程序现在都提供了 native 组件的安装选项。

JCA

976294 - 具有使用原始类型的属性的 ResourceAdaptor (rar) 会部署失败

在以前的 JBoss EAP 6 里,使用具有以原始数据类型为参数的属性的资源适配器会出现问题。

这个问题会导致资源适配器部署失败,日志文件里包含和未设置的资源适配器的属性相关的信息。

本版本里通过使用数据类型内省(introspection)来检查属性(包括原始数据类型)解决了这个问题。

以原始数据类型为参数的资源适配器的部署不会再失败了。
913804 - ManagedConnectionFactory 的 LogWriter 未输出任何信息到标准输出里

在以前的 JBoss EAP 6 版本里,通过 ManagedConnectionFactorysetLogWriter 方法传递的 PrintWriter 对象没有输出任何日志消息到标准输出里(stdout)。

这是因为 AbstractResourceAdapterDeploymentService 类里的 PrintWriter 没有设置为 autoflush,本版本已修复了这个问题。

现在 ManagedConnectionFactorysetLogWriter 方法设置的 PrintWriter 对象的输出信息已经出现在标准输出里了。
980920 - ResourceAdapter 实例没有注册 inflow 崩溃恢复

在以前的 JBoss EAP 6 版本里,资源适配器没有注册流入崩溃恢复(Inflow Crash Recovery)。因此,流入资源适配器上不会执行 XA 恢复,且在服务器崩溃后可能导致不一致的状态。

在这个 JBoss EAP 6 版本里,流入资源适配器(Inflow Resource Adapter)在激活时会注册崩溃恢复。因此,在服务器崩溃时流入资源适配器会保持一致的状态。

日志

969530 - 当 JBoss LogManager 在日志子系统所期望的之前初始化时抛出了ClassCastException。

如果将 JBoss LogManager 添加到了引导 classpath 里,如自定义的 Java 代理(如 Introscope 或 JMX 代理)的 classpath,JBoss LogManager 将使用默认的配置而不是日志子系统的配置进行引导。

因为日志子系统会假设它自己的配置将被使用,所以这会导致 JBoss EAP 6 启动失败,并显示下列错误:
ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 5) JBAS014612: Operation ("add") failed - address: ([
    ("subsystem" => "logging"),
    ("console-handler" => "CONSOLE")
]): java.lang.ClassCastException: org.jboss.logmanager.PropertyConfigurator cannot be cast to org.jboss.as.logging.logmanager.ConfigurationPersistence
...
Copy to Clipboard Toggle word wrap

这个 JBoss EAP 6 版本里已经修复了这个问题,所以日志子系统不会再假设使用自己的配置。如果没有使用日志子系统自己的配置,系统将使用原来的配置(通常是默认的配置)。

由此,现在你可以使用自定义的 Java 代理而不影响 JBoss LogManager 的初始配置。
971190 - log4j appender 强制 appender/handler 在重启时进行初始化

在前一个 JBoss EAP 6 版本里,当添加一个自定义的 Apache log4j appender 时,手动配置的 appender 的类名不正确地和引导时包含的类名进行了比较。

这个问题导致自定义的处理程序在 JBoss EAP 6 实例的每次重启时都进行了重新配置。这个问题可能已经影响了使用设置为 append 的 FileAppender 的配置,从而导致覆盖了日志文件。

这个问题通过将 log4j appender 包裹在名为org.jboss.as.logging.logmanager.Log4jAppenderHandlerjava.util.logging.Handler 里,并用处理程序里的 appender 的类名来检查其类名得到了解决。

由此,如果检查结果匹配,自定义的 log4j appender 处理程序在 JBoss EAP 6 实例的每次重启过程中都不会被重新配置。
975557 - Syslog Handler: 对于多字节字符的消息长度计算有误

在以前的 JBoss EAP 6 里存在一个问题,syslog handler 会错误地以字符数而不是字节数计算消息长度。

如果 syslog 消息里包含多字节的字符,如带有元音的字符,无效的消息长度将被发送。因此,一些日志消息包含了无效或缺失的字符。

在这个 JBoss EAP 6 版本里已经更新了 syslog handler,它现在可以正确计算消息长度了。syslog handler 不会再将无效或缺失的字符计算为错误的消息长度。
975559 - 如果调用了 prepare 语句,处理程序回滚将得到 null 实例引用。

在之前的 JBoss EAP 6 版本里,如果 appender 的名称保持不变,删除和重新添加 Apache log4j appender 的复合操作的回滚将会失败。这是因为对之前 log4j appender 的引用已经被删除了。

解决方法是不要检验 log4j appender 的引用是否存在,因为之后它可能会被创建。

由此,当删除和重新添加 Apache log4j appender 的复合操作回滚时不会再显示错误了。
981544 - PeriodicRotatingFileHandler 没有在 12AM 而在 12PM 轮询了文件

在以前的 JBoss EAP 6 版本里找到一个程序错误,它导致 LogManager 没有在重启后轮询日志文件。如果服务器在 PM 时段(下午)重启,就会出现这个错误。它是由于 LogManager 未正确处理半天时段而引起的。 LogManager 的更新版本已经修复了这个错误。
975085 - 无法删除自定义的日志处理程序

在之前的 JBoss EAP 6 版本里,自定义日志处理程序(如 Apache log4j)的删除过程中,试图在实例被删除后执行 post-configuration 方法。这会导致删除自定义日志处理程序失败。

这个版本的 JBoss EAP 6 已经修改了日志子系统已防止这个问题的发生,现在可以可以删除了自定义的日志处理程序了。
973450 - 文件属性总是替代了文件,即使其值是相等的。

以前的 JBoss EAP 6 里有一个问题,在引导期间由文件日志处理程序记录的日志事件会被覆盖。如果未将文件日志处理程序设置为 append 模式,这个问题就会出现。

这是因为在和引导期间使用的值相比较时,日志子系统没有正确地检查文件日志处理程序的 FILE 属性。

在这个 JBoss EAP 6 版本里已经更新了日志子系统来修复这个问题。对于没有设置为 append 状态的文件日志处理程序,它可以正确根据引导时使用的值来检查 FILE 属性,所以引导时记录的事件不会再被覆盖了。

PicketLink

956782 - 使用一个 CSS 文件的 IDP "hosted" 页面会导致 java.lang.IllegalStateException: getOutputStream() has already been called for this response

安全性

958252 - 在启用了群集 SSO 时, HttpServletRequest.logout() 会使会话失效。

在以前的 JBoss EAP 6 版本里使用 SSO 时,对 HttpServletRequest.logout() 的调用会导致会话失效。期望的行为应该是会话登出,但不会失效。

这个版本已经添加了 org.apache.catalina.authenticator.AuthenticatorBase.UNREGISTER_SSO_ON_LOGOUT 系统属性,它允许会话登出而不是失效。

SSO 登出行为可以使用这个属性在新和旧方法间切换。当 UNREGISTER_SSO_ON_LOGOUT 被设置为 false(默认设置)时,会话登出时不会失效。如果 UNREGISTER_SSO_ON_LOGOUT 被设置为 true,原始的会话失效登出行为将被使用。

事务管理者(Transaction Manager)

968125 - FileSystemStore.openAndLock 里的性能问题

Web

900886 - EAP6 里缺失了 org.jboss.web.tomcat.security.GenericHeaderAuthenticator

最近的 JBoss EAP 6 版本没有包含基于头部信息的验证工具。本版本则引入了 org.jboss.as.web.security.GenericHeaderAuthenticator 来解决这个问题。
922180 - ContextConfig.authenticatorConfig() 里的 Race 条件

以前的 JBoss EAP 6 版本包含一个可能偶尔造成加载使用 JBossWeb 验证的应用程序失败的潜在竞争条件。我们跟踪这个问题到了 org.apache.catalina.startup.ContextConfig 以及 authenticator 属性的实例化。我们发现某个线程可能在实例化线程完成加载 authenticator 属性前就试图使用它们。本版本使用了静态的初始器以避免这种竞争,现在应用程序已可以如期加载了。

doc-Administration_and_Configuration_Guide

988827 - 16.5.3. 在缺失 RPM 时如何安装 mod_cluster

jbossas

963298 - 模块服务依赖关系没有考虑临时的依赖关系

JBoss EAP 6 里存在的一个问题是,依赖关系图表Windows 服务器上的独立配置可能遇到性能降低的问题。

这会导致一个模块试图在其所有依赖关系启动前启动,并导致应用程序部署失败且抛出下列异常:
Caused by: org.jboss.modules.ModuleLoadException: JBAS018760: Timeout waiting for module service: deployment.example.ear.example-ejb.jar:main
...
Copy to Clipboard Toggle word wrap

为了修复这个问题,我们添加了一个多阶段解决过程来确保所有依赖的模块规格服务在模块服务启动之前都已启动。

由此,在部署的 Class-Path 里指定临时依赖关系,部署应该不会再失败了。

7.2. 增强

构建 Maven 资料库

987273 - 未指定自定义用法的 BOMs

作为使红帽JBoss EAP 的开发更为合理化的持续努力的一部分,这个版本包含了新的 Bill of Materials (BOM) 文件以用于可下载的 JBoss EAP 6 Maven 资料库。关于新的 BOM 文件以及下载资料库的详情,请参考《JBoss EAP 开发指南》。

7.3. 已知的问题

群集

959753 - DIST SYNC: 在节点重起后 jboss.infinispan.web.default-host/XY 服务不会启动,显示 "Initial state transfer timed out"。
900483 - 在节点关闭时使用 DIST SYNC 时接收到过时的会话数据。

在测试过程中,某些用例显示当关闭节点且使用 DIST SYNCDIST ASYNC 缓存模式时接收到了过时的会话数据。我们仍在调查这个问题。
900707 - 当字符串 "localhost" 用作默认值的一部分时,属性替换出现问题。

当字符串 localhost 用作 JGroups 子系统配置里默认值的一部分时,属性替换出现问题。属性替换是为 JBoss EAP 6 子系统提供的一个功能。然而,并非所有的子系统都启用了它,一些子系统(如 JGroups)进行了它们自己的一些替换。然而,这个行为不是标准化的,和受支持的子系统属性不同。红帽建议你不要使用 JGroups 子系统的属性替换,直至这个问题得到解决。
900378 - 带有 SET 复制触发器的 CDI bean 没有进行复制

由于 Weld 组件里的一个程序错误,setAttribute 方法没有被正确调用。这导致带有 SET 复制触发器的 CDI Bean 不能进行复制。绕开问题的办法是使用 SET_AND_NON_PRIMITIVE_GET 触发器。这个问题将在以后的版本里得到解决。

发布

965315 - 用户脚本的 jboss-ec2-eap 超时没有正常工作

JBoss EAP 的 AMI 映像上的用户脚本里的超时功能无法工作。如果用户脚本里的某个命令挂起了,这会阻止虚拟机正常地引导。超时功能的目的是允许虚拟机继续引导,而不管挂起的用户脚本命令,并允许在用户脚本上进行诊断。引起这个问题的原因是 Bash shell 不支持非交互式 shell 里的作业控制,而这个功能是超时功能所要求的。我们目前还没有解决办法,但希望在以后的版本里能进行解决。

EJB

900480 - CLONE - 当群集成员资格改变时,远程 EJB 调用里的响应极其地慢。

服务器关闭或崩溃时,成员资格的改变可能需要一分钟才能完成。我们正在调查这个问题。
923836 - remote:// 协议无法在 IBM JDK 里的 SLL 上运行

这是 JBoss EAP 6 里存在的一个已知问题,IBM JDK 上的远程命名查找会间歇性地失败,并抛出下列异常:
org.jboss.remoting3.NotOpenException: Endpoint is not open.
Copy to Clipboard Toggle word wrap

当客户使用 IBM JDK 时会出现这个问题。服务器使用 IBM JDK 而客户使用其他 JDK 时,这个问题就不会出现。

我们正在调查和解决这个问题
962734 - EJB 调用期间的 IOException 导致挂起

如果服务器端的 EJB 协议接收器从客户端接收了无效的消息头部,类似于下面的信息将被登记,而客户端将挂起。
15:06:46,092 WARN  [org.jboss.as.ejb3] (Remoting "dhcp-4-126" task-4) JBAS014254: Received unsupported message header 0xffffffff on channel Channel ID 0c51fad8 (inbound) of Remoting connection 4589adff to /127.0.0.1:33329
Copy to Clipboard Toggle word wrap

当无效的消息头部被接收并记录时,EJB 协议接收器不会在频道里重新注册自己,所以它不会再响应以后的消息。而客户端将等待根本不会被发送的响应,因为原始消息并不会被服务器处理。

这个问题有一个部分的解决办法。在创建 EJB 客户上下文时设置 invocation.timeout 属性将阻止客户无限期挂起,然而它不会让客户继续 EJB 调用。

Hibernate

900321 - 当获取使用 NaturalIdLoadAccess 进行 naturalIdQuery 的结果时,缓存正确的 natural-id 值时出现的 HHH-7287 问题。

在从非事务场景更新了 natural-id 值后,从二级缓存(L2)加载实体时 Hibernate 接口 NaturalIdLoadAccess 行为不一致。

Hibernate 目前不支持对数据库的事务性和非事务性混合访问时具有自然标识符的实体的 L2 缓存。

HornetQ

959616 - 激活时备份服务器的干净关闭过程中出现死锁

配置为 HornetQ 备份服务器的 JBoss EAP 6 服务器将在下列情况下关闭失败:
  • Message-Driven Beans 部署在本地服务器上,而且
  • 关闭命令时在服务器的激活过程中执行的。

在这个情况下,关闭服务器将导致死锁,从而阻止了关闭过程的完成。一旦死锁,服务器必须强制性地进行终止。在红帽企业版 Linux 6 里,这可用 kill -9 命令来完成。

要避免这个情况,请只在激活之前或之后、也不要在日志加载过程中关闭服务器。
899966 - IPv6 link-local 地址上的 Netty 有问题

由于一个 JDK 错误,如果使用了链接本地地址,zone ID 将用来区分所选的接口。这个问题不会影响全局地址。Netty 组件以后的版本里将包含一个解决的方法。
912653 - Clone: 远程 JNDI 无法和 HornetQ-only JMS 桥一起使用

对 IPv6 的支持

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

IPv6 地址应该用方括号 ([ 和 ]) 格式化,如 http://[2620:52:0:105f::ffff:2]:9990,但 JBoss EAP 6 里的日志文件里缺失了括号。我们将在以后的版本里解决这个问题
900609 - 当服务器绑定到 IPv6 时,Windows 上有打开的 IPv4 套接字。

如果 JBoss EAP 6 在 Microsoft Windows 服务器上启动,禁用 IPv4 而启用 IPv6,IPv4 套接字将仍被打开。我们正在调查这个问题。

JCA

952277 - 禁用 xa-data-source causes that data-source loses its attribute enabled set to false and after reload it becomes enabled

这是 JBoss EAP 6 里存在的一个已知问题,当 JBoss EAP 6 服务器实例重启时,禁用的 non-XA 数据源会被不正确地启用。

当禁用的 non-XA 和 XA 数据源存在于相同的服务器上,且 XA 数据源在 JBoss EAP 6 服务器重启前被禁用时,就会出现这个问题,

我们正在调查这个问题的原因。

mod_cluster

958991 - 当使用 ProxyPass / balancer://bal 和 CreateBalancers 1 时的 mod_cluster core 问题

在 /conf.d/mod_cluster.conf 里设置了 CreateBalancers 1,但没有设置 stickysession=JSESSIONID|jsessionid 的JBoss EAP 6 用户将遇到下列的 segmentation 故障:
[notice] child pid 7787 exit signal Segmentation fault (11)
Copy to Clipboard Toggle word wrap

添加 stickysession 元素到 CreateBalancers 配置将解决这个问题。

例如:
CreateBalancers 1
ProxyPass / balancer://qacluster stickysession=JSESSIONID|jsessionid
Copy to Clipboard Toggle word wrap
963720 - mod_cluster: 在 Solaris 上使用 IPv6 的代理 DNS 查找失败。

Java 返回带有类似于 2001:db8:0:f101::1%2 的 zone 值的 IPv6。随后,当返回节点地址时,modcluster 子系统发送 Java 里的 IPv6 信息。在 Solaris 里, apr_sockaddr_info_get() 不支持返回的格式且无法将 IP 解析为主机名。因此,dhttpd mod_cluster 无法如预期地使用 IPv6 节点地址。

绕开这个问题的办法是使用 web 子系统连接器里的 address="hostname"
960243 - ProxyPass 集成里的回归问题

由于 JBoss EAP 6 里包含了早期版本的 mod_proxy_cluster.so,访问目录(如 /app/clusterbench/requestinfo/)会返回 HTTP 503 错误。

这是 JBoss EAP 6.1.1 里存在的一个已知问题,目前还没有解决办法。
901227 - web 控制台里的 node-timeout、worker-timeout、flush-wait 和 ttl mod_cluster 属性

这是 JBoss EAP 6 里存在的一个已知问题,基于 Web 的管理控制台阻止用户查看或设置下列 mod_cluster 属性值为 -1
  • node-timeout
  • worker-timeout
  • flush-wait
  • ttl

如果已经设置了 -1 值,管理控制台会错误地显示属性的值为 0。当试图用管理控制台将属性值设为 -1,管理控制台显示警告:Invalid numeric value

绕开的方法是使用管理 CLI 来将受影响的属性设置为 -1

我们正在调查这个问题的原因。
900801 - 通过 CLI 添加 modcluster 失败。

JBoss EAP 6 里存在一个问题,你无法通过管理 CLI 的单个命令来添加 mod_cluster 子系统,也无法用单独执行的命令序列来添加。

/subsystem=modcluster:add() 命令要求将连接器作为相同命令集的一部分来添加,但是 /subsystem=modcluster:add() 命令自身并不允许配置连接器。

试图通过管理 CLI 来添加 mod_cluster 子系统会失败并显示错误:JBAS014746: connector may not be null

要绕开这个问题,请在 batch 模式下执行 add() 以及连接器配置命令。例如:
[standalone@localhost:9999 /] batch
[standalone@localhost:9999 / #] /subsystem=modcluster:add
[standalone@localhost:9999 / #] /subsystem=modcluster/mod-cluster-config=configuration:add(connector=ajp,advertise-socket=modcluster)
[standalone@localhost:9999 / #] run-batch
Copy to Clipboard Toggle word wrap

以后的版本里将修复这个问题。
980246 - mod_cluster-manager 可能分断单个虚拟机的别名,导致页面乱码。

事务管理者(Transaction Manager)

988724 - 针对 PostgreSQL 的崩溃恢复在回滚时抛出异常

我们已确定 PostgreSQL JDBC 驱动在某些恢复场景里会返回错误的代码。

在事务的 prepare 阶段,当运行 JTS 的事务管理者在崩溃后执行恢复时会出现这个问题。这导致了在服务器日志里写入 XAException 消息。

这个问题是对不存在的事务 Xid 进行再次调用时引起的。然而,按照 JTS 规格,这种行为是被定义为有效的。

我们已经确认了这是 PostreSQL JDBC 驱动内部的错误行为,驱动问题及状态可以在这个页面进行监控:https://github.com/pgjdbc/pgjdbc/issues/78

其他问题

900047 - Linux/Unix 里 SystemMemoryUsageLoadMetric 不正确

在 Linux 或 UNIX 系统上 SystemMemoryUsageLoadMetric 没有显示有用的信息。对于这些系统,HeapMemoryUsageLoadMetric 提供了更多的有用信息。解决方案时修改 SystemMemoryUsageLoadMetric 的算法从 used 数字减去 buffers/cache 值。实现这一点的最好方法是进行调查研究。
901231 - 在 IBM JDK 上使用 finalize() 需要格外小心

当运行在 IBM JDK 6 和 7 上时,JBoss EAP 6 可能遇到间歇性的故障。这是因为 IBM 的垃圾回收器比其他 JVM 更为积极。有时候这会导致在没有预料的情况下内存没有回收,而这不会发生在其他 JVM 上。

在这个问题得到解决之前,红帽推荐你不要使用 IBM JDK 6 或 7 来运行 JBoss EAP 6。
901210 - 清理 deploy 目录 - AS7-6031

RESTEasy

958896 - RESTEasy: 响应里无效的 Content-Type - 当在请求头部里指定无效的接受头部时出现错误的行为

JBoss EAP 6 的 RESTEasy 子系统里存在一个问题,当在接收的 HTTP 请求里出现无效的接受头部信息时,错误的 HTTP 200 将被发送。

当提供了无效的接受头部信息时,正确的响应应该是 HTTP 500。我们正在调查这个问题。

脚本和命令

990227 - jboss-cli.sh 在无人参与的模式下运行(如脚本)时会挂起

如果 jboss-cli.sh 脚本被另外一个脚本调用,而验证细节(用户名和/或密码)并未以参数提供,那么调用脚本将会挂起。这是一个已知的问题,预料将在以后的版本里得到解决。请确保从其他脚本进行调用时提供所有要求的参数。
916960 - 如果括号出现在 EAP 路径里,Standalone.bat 将无法工作。

这个 JBoss EAP 6 里存在一个关于 Windows Installer 和安装到包含括号的目录的已知问题。例如,目录为:C: Program Files (x86)\jboss-eap-6.1\

在这些情况下 standalone.bat 可能会运行失败并输出信息:\jboss-eap-6.1 was unexpected at this time.

这是因为 DOS 处理器拦截了 "echoed" JBoss 路径名里的结尾括号,将其当作前面的 if 语句的结尾部分。

要解决这个问题:
  1. 在编辑器里打开 JBOSS_HOME\bin\standalone.bat
  2. 找到下列行:
    echo    JBOSS_HOME: %JBOSS_HOME%
    Copy to Clipboard Toggle word wrap
  3. %JBOSS_HOME% 变量两侧添加双引号:
    echo    JBOSS_HOME: "%JBOSS_HOME%"
    Copy to Clipboard Toggle word wrap

这将确保正确地解析括号,从而成功地执行 standalone.bat
998913 - standalone.bat 仍会设置 -XX:+TieredCompilation JVM 选项

这是 JBoss EAP 6 里存在的一个已知问题,Windows 服务器上的独立配置可能遇到性能降低的问题。

这是因为 standalone.bat 里的-XX:+TieredCompilation JVM 选项的设置引起的。

要绕开这个问题,你可以从 standalone.bat 删除下列设置 -XX:+TieredCompilation JVM 选项的代码:
if not "%PRESERVE_JAVA_OPTS%" == "true" (
  rem Add tiered compilation, if supported (64 bit VM), and not overriden
  echo "%JAVA_OPTS%" | findstr /I "\-XX:\-TieredCompilation \-client" > nul
  if errorlevel == 1 (
    "%JAVA%" -XX:+TieredCompilation -version > nul 2>&1
    if not errorlevel == 1 (
      set "JAVA_OPTS=-XX:+TieredCompilation %JAVA_OPTS%"
    )
  )
)
Copy to Clipboard Toggle word wrap

我们预计在 JBoss EAP 6 的后续版本里会修复这个问题。
956281 - 在 32 位 JVM 上启动 EAP 6.1 可能导致启动 JVM 失败

在 Windows 8 32 位的虚拟机里,默认的最大 perm gen 空间设置导致了 JVM 无法创建,从而阻止了服务器的启动。要解决这个问题,请从 JVM 的启动参数里删除 -XX:MaxPermSize=256m。然后 JVM 就可以被创建,而服务器就可以启动了。

安全性

920160 - 对用自定义授权模块保护的 web 应用程序的未授权访问导致了 HTTP 200 (OK) 而不是 HTTP 403 (Forbidden)。

当在使用自定义授权模块的 web 应用程序上尝试未授权的 HTTP 请求时,未授权的请求会导致空的 HTTP 200 (OK) 响应。对于未授权的 HTTP 请求,正确的响应该是 HTTP 403 (Forbidden)。我们正在调查这个问题。

Web 服务

900634 - 当请求响应消息时,JBossWS-CXF 未发送 fault 消息给 FaultTo 端点。

如果 WS-Addressing 的FaultTo 元素被设置未一个 WS 客户,WS 服务器不会发送 fault 消息给 FaultTo 目的地。然而,如果设置了 ReplyTo 元素,WS 服务器就不会发送响应到 ResponseTo 目的地。原因仍在调查之中。

A. 修订历史

修订历史
修订 1.1-6Tue Feb 11 2014Misha Husnain Ali
BZ-1004638: Fixed a minor typo.
修订 1.1-5.2Fri Nov 1 2013Xi Huang
Translation files synchronised with XML sources 1.1-5
修订 1.1-5Wed Sep 4 2013Russell Dickenson
JBoss 企业级应用程序平台 6.1.1 GA 发行版本。

法律通告

Copyright © 2013 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
返回顶部