6.2.0 发行注记

JBoss 企业级应用程序平台 6.2

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

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

摘要

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

1. 概述

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

2. 常见问题解答

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

3. 新的功能

JBoss 企业级应用程序平台 6.2.0 里添加了下列新功能。
通用的 JBoss JMS 资源适配器
EAP 6.2 里现在有通用的 JMS 资源适配器。这个资源适配器支持对不提供自己的资源适配器并支持 XA 和 non-XA 用例的外部 JMS 系统集成的。请参考《管理指南》『Configure a Generic JMS Resource Adapter for Use with a Third-party JMS Provider』章节的配置步骤。
用于管理操作的 RBAC
基于角色的访问控制(Role-based access control,RBAC)已被实施,它通过所有的管理接口提高了管理操作的访问控制精度。用户和组可以和决定对管理操作的访问级别的角色相关联。
用于补丁的管理操作
安装补丁、回滚补丁和报告补丁状态的管理操作已被实施。这些操作启用用户来安装 JBoss EAP 6.2 及更高版本的 CVE、简单补丁、累积补丁。这些操作是通过 CLI、Native 和 HTTP 管理接口开放的。在以后的版本里这些操作将可以通过控制台来执行。
管理性审计日志
管理性动作日志的新配置选项。对于审计日志配置的管理访问可以通过 RBAC 配置里定义的审计者角色来界定作用域。
PicketLink STS Quickstart
PicketLink 安全令牌服务(Security Token Service,STS)现在作为 QuickStart 出现了。
WebSphere MQ 认证
通过 WebSphere MQ 资源适配器和 WebSphere MQ 集成已经通过了测试和认证。
JDBC 事务库
你可以配置将 JBoss 事务的状态存储在任何 RDBMS 系统里。这个改进消除了对用于事务恢复的共享文件系统的需要。
Syslog 处理程序配置
JBoss EAP 6 现在提供了用于 syslog 协议的处理程序和配置。
WSI-Basic Profile 1.2
JBoss Web Service 已通过测试来确保和 WSI-Basic Profile 1.2 兼容。
WSI-Basic Profile 2.0
JBoss Web Service 已通过测试来确保和 WSI-Basic Profile 2.0 兼容。
通过 JGroups 进行 HornetQ 发现
HornetQ 现在提供了通过 UDP 和 JGroups 动态发现服务器连接设置。
外部的 JNDI Federation
JBoss EAP 6 配置里已经添加一个命名子系统配置,它让管理员可以连接外部的命名系统到JBoss EAP 6 JNDI。这个功能替换了 JBoss EAP 5 里的 ExternalContextMBean
JBoss CLI 的 Silent 模式
用于嵌入 CLI 的进程的 CommandContext API 里添加了一个 'Silent 模式'。
邮件子系统里对自定义传输的支持
我们增强了邮件子系统,让管理员可以提供自定义的传输协议。
新的 Hibernate 批加载算法
Hibernate 已经在现有的算法里添加了两个批加载算法:Dynamic 和 Padded。
Hibernate - 改进了用于 Non-Mutable 数据的对象引用的二级缓存
Oracle 12c
Oracle 12c 数据库已被测试并添加到了受支持的配置列表里。

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

我们已经知道下面的配置和功能有问题,它们只是作为技术预览出现。产品环境里不提供支持。
使用 JBoss Web 服务的 WS-Trust/STS
JBoss Web 服务现在从底层的 CXF 实现开放了 WS-Trust/STS 能力。
用 JBoss CLI 添加和删除模块
CLI 提供了新的命令来添加和删除模块。
WS-AT/XA 桥
WS-AT/XA 事务桥功能只是作为技术预览提供,产品环境里并不提供支持。
使用 Hibernate Validator 的 RestEasy 检验
RestEasy 现在作为检验提供者以支持 JBoss EAP 6 附带的 Hibernate Validator。
已恢复的 ServiceMBean helper 类
我们已经引入了 org.jboss.as.system-jmx 模块来恢复之前 JBoss EAP 版本里协助用户创建 MBean 的 helper 类。
Multi-JSF
这个功能让用户可以用自己的 JSF 实现替换 JBoss EAP 6 里提供的 JSF 实现。
Hibernate - 改进和扩展了对字节码的支持

5. 不支持的功能

下面是目前 JBoss EAP 不支持的功能。
HornetQ 里的 STOMP 协议
HornetQ 具有对 STOMP 协议的社区级的支持。这个协议还未从红帽接受测试,暂不被 JBoss EAP 所支持。
HornetQ 里的 REST 协议
HornetQ 具有对 REST 协议的社区级的支持。这个协议还未从红帽接受测试,暂不被 JBoss EAP 所支持。
Infinispan API
JBoss EAP 6 不支持直接使用 Infinispan API。Infinispan 用作 JBoss EAP 6 内部不同的群集技术的实现细节。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,标识符管理)。
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. 本版本里的修改

7.1. 程序错误修复

应用程序客户

999465 - appclient.xml 错误的命名版本

因为 appclient.xml 里的错误版本号码,命名子系统(Naming subsytem)会无法启动,导致一个依赖关系的问题。这个版本号码已被改正,现在 appclient 可以成功启动了。
1003104 - appclient 在 .ear 外部执行 .jar 文件时挂起

appclient 代码里的问题阻止了 .jar 文件的直接执行。我们已经添加了其他代码来纠正这个问题,现在可以直接执行 .jar 文件了。

类加载

959478 - 添加 sun.nio.cs & sun.nio.ext 路径到 sun.jdk 模块

当试图用 sun.jdk 加载自定义字符集时,sun.jdk 模块里缺失的软件包导致ServiceConfigurationError。本版本的 JBoss EAP 6 已经添加了缺失的 sun.nio.cssun.nio.cs.ext,因此,自定义字符集可以和 sun.jdk 模块一起使用了。

CLI

977407 - 在使用 tab complete 时 jboss-cli.sh 抛出 IllegalArgumentException

在某些情况下,当用户触发 tab completion 功能时,jboss-cli 工具会异常退出。我们已经修复了这个错误。
990227 - jboss-cli.sh 在无干预运行时会挂起(如从脚本运行)

在以前的 JBoss EAP 版本里,如果服务器用脚本自动运行,或重定向到 null 或 STDIN,服务器将退出到需要用户输入的状态。而在最近发布的版本里,服务器会挂起。本版本包含了一个更新的 Aesh (Another Extendable Shell) 版本,它恢复了原来的行为。用自动脚本启动的服务器可以正常退出,在需要用户输入时不再挂起。
977426 - 未连接且处于批处理模式时 jboss-cli.sh 抛出 NullPointerException

当从服务器断开连接时,试图用 jboss-cli 工具添加命令到批文件将导致 jboss-cli 退出。我们已经纠正了这个错误。现在会为用户显示下列错误信息:
Command is not supported or unavailable in the current context: Failed to load operation description: not connected

群集

974967 - standalone.xml 里的 jvmRoute 可以导致 org.infinispan.marshall.NotSerializableException

当将 mod_jk 和负载平衡器及 sticky session 标记一起使用来创建 farming 构架时,分布式应用程序的部署会失败,这是因为没有启用群集。因为 RegistryServiceLOCAL_ADDRESS 被初始化为不可序列化的默认值。非序列化的 LOCAL_ADDRESS 阻止了部署的成功进行。现在 LOCAL_ADDRESS 已被初始化为可序列化的值,分布式应用程序的部署可以正常进行了。
918791 - 用多个 web 应用程序启动服务器会导致部署失败。

在某些情况下,如果群集服务器部署多个 web 应用程序,会无法进行。这种情况下的每个应用程序都会试图锁住缓存管理者来创建自己的缓存,而获得锁的第一个应用程序将成功部署。然而,由于等待对缓存管理者的访问,其他部署都可能超时而导致部署失败。JBoss EAP 6 现在包含了一个 GlobalComponentRegistryService,它处理了这种情况,现在部署可以成功进行了。

域管理

983980 - EAP6 CLI 命令不应该允许在其他部署里使用相同的 runtime-name。

具有相同运行时名称的部署被错误地部署到相同的 JBoss EAP 6 实例里。

因此,由于使用错误部署的运行时名称,实例可能进入不一致的状态。

这个版本的 JBoss EAP 6 已解决了这个问题,对于每个 JBoss EAP 6 实例运行时名称只允许被使用一次。如果试图部署具有已被使用的运行时名称的应用程序,下列错误将被显示:
There is already a deployment called ${name} with the same runtime name ${runtime-name} on server group ${server-group}
1021763 - 由于不一致的重部署的回滚,域控制器无法重启。

用于 full-replace-deployment 的处理程序包含了删除已经作为操作的一部分添加而正在被回滚的部署内容的逻辑。做个逻辑没有检查已添加的内容是否和现有的内容相同,所以如果相同,现有的内容将会被误删。

由此,如果相同的内容使用 deploy --force CLI 命令在受管域里重新部署,而如果重部署由于某种原因(如服务器上的依赖服务缺失)失败,而部署失败时,作为回滚过程的一部分,这些内容将从所有主机上删除。然而,该部署的现有配置将会保留,当主机重启时会去部署不存在的内容,从而导致引导失败。

本版本里已修复了这个问题,回滚逻辑现在可以识别,如果内容未修改则不会删除这些内容。

因此,回滚会让域处于和重部署之前一致的状态,而内容和引用内容的配置将在所有主机上保留。
960820 - 递归表达式的解析

其他表达式的输出里包含的表达式不会被解析。这表示不可能在配置里使用表达式来引用其他表达式。这是因为不会对表达式解析的输出进行检查是否有表达式需要解析。

现在表达式解析是递归的。 当表达式被解析时,系统会对输出里的表达式进行进一步解析,直至找不到更多表达式为止。

表达式现在可用来引用配置里的其他表达式。

EJB

991444 - 如果 optimistic-locking 为 true,EJB2 CMP 的缓存访问错误。

当为 EJB2 Entity Bean 配置乐观锁时,缓存的 entity bean 永远无法在缓存里找到。这是因为缓存查找使用错误的标识符进行的。Entity bean 的主键被用来定位正确的事务缓存而不是事务标识符。现在我们已经纠正了这个问题。
1005110 - 进行 EJB 异步调用时 ClassLoader 内存溢出

在某些情况下,异步 EJB 调用可能导致部署的 classloader 的内存溢出。

这是因为 execute 方法可能导致新的线程的创建。当这种情况发生时,新线程会将自己分配给父线程的上下文类加载器。为防止这种情况发生,在调用 execute 方法之前,Thread Context Classloader (TCCL) 应设置为 null,之后再进行恢复。

异步 EJB 调用不会再导致部署类加载器溢出了。
1019894 - 在 EJB 的所有依赖关系被启动之前,它不应该可远程访问。

在某些情况下,EJB 在完全启动以前就可以被远程调用,导致了无响应的 EJB 客户端。这是因为在完全解析所有依赖关系之前就绑定了远程接口。因此 bean 可以在能够响应前被调用。我们已经修复了这个问题。
1005093 - 和 EJB 异步调用相关联的安全上下文可能被调用者线程损坏

从 servlet 异步调用 EJB 可能丢失其安全上下文,如果这个 servlet 调用先完成。这是因为 servlet 和 EJB 线程共享相同的 SecurityContext 实例,servlet 的安全上下文会被清除。现在 SecurityContext 属性从 servlet 线程上的实例复制到 EJB 线程上的 SecurityContext 对象实例上。对一个线程上的 SecurityContext 线程的更新不会再影响其他实例。

Hibernate

998841 - HHH-8447 的永久性修复(由于使用了错误的别名,带有多个子查询的 HQL 删除失败)

如果 HQL delete 查询包含了多个子查询,只有第一个子查询会使用正确的根表别名。为其他子查询生成的 SQL 将使用错误的别名。

这个问题是因为在生成 SQL 查询时对多个子查询不正确处理引起的。

本版本里已修复了这个问题,当为所有子查询生成 SQL 时,带有多个子查询的 HQL delete 查询现在可使用正确的根标别名。
947946 - HSQL 方言里错误的 "to_char" 函数

to_char 函数的 HSQL 方言实现里的一个程序错误导致了对象到字符串的错误转换,而在对比里使用时会导致 java.lang.IllegalArgumentException

在这个版本的 JBoss EAP 6 里,HSQL 里的 to_char 函数已被修复,可以正确地转换对象为字符串了。因此,使用 to_char 的比较不会再抛出 java.lang.IllegalArgumentException 了。
990587 - [HHH-7959] 在显性地逐出后,设置了 transaction-mode=NONE 的 Hibernate/Infinispan 的二级缓存会停止工作

当在程序里强制逐出时,设置了 transaction-mode=NONE 的 Infinispan 二级缓存会失效。这个无效的状态将导致性能的降低,并记录 TRACE 级别的日志消息:Could not invalidate region: null

这个问题是因为未处理和在非事务性配置里使用 TransactionManager 相关的 null 值而造成的,它会抛出 NullPointerExceptions。

这个 JBoss EAP 6 版本已修复了这个问题,现在正确的 null 值检查可以允许逐出和有效状态的发生。因此,在程序里强制配置了 transaction-mode=NONE 的 Infinispan 二级缓存上的逐出不会再触发无效状态和相关联的性能降低了。
1018146 - [HHH-8605] ManyToManyTest.testManyToManyWithFormula 在使用 mssql2008R2, mssql2012, sybase157 时会失败

在 Sybase 和 Microsoft SQL 服务器上,在子查询里含有 tuple 的 HQL 查询将抛出异常。Sybase 和 Microsoft SQL 服务器都不支持子查询里的 tuple,如下列查询:

delete from Table1 where (col1, col2) in (select col1, col2 from Table2)

这个问题之所以出现,是因为用于 Sybase 和 Microsoft SQL 服务器的 Hibernate 方言没有将 supportsTuplesInSubqueries 属性设置为 false

在这个 JBoss EAP 6 版本里,我们更新了用于 Sybase 和 Microsoft SQL 服务器的 Hibernate 方言,它可以正确反映对子查询里 tuple 缺乏支持。因此,现在会产生警告信息而不是抛出异常。
1003468 - HHH-8464 对 JoinColumn 使用 JPA2 专有的引号(双引号)会导致 DuplicateMappingException。

对于 JoinColumn 使用 JPA-2 专有的引号(")将导致 DuplicateMappingException。这个问题是因为没有在内部范化引号而引起的。

本版本里已修复了这个问题,所以对 JoinColumn 使用 " 现在已正确范化,且不会再导致 DuplicateMappingException 了。
991578 - HHH-8390 在唯一的约束存在前生成了外键引用

在 Oracel 或其他方言上创建在外键被定义为唯一的或作为主键之前声明它的 schema 会失败。

通过强制在外键约束作为 schema 导出过程的一部分之前创建唯一键约束,这个 JBoss EAP 6 版本里已修复了这个问题。

由此,在 Oracle 上导出的 schema 不会再失败,因为外键是在唯一约束存在前声明的。
977520 - HHH-8318 带有 "member of" 的 "delete" 查询失败

包含 member of 子句的 HQL delete 查询里的一个程序错误可能导致生产错误的 SQL。因此,错误的 SQL delete 查询将会失败。这个问题是使用错误的别名的 member of 子查询引起的。

通过在用作 HQL delete 查询的一部分时使 member of 子查询使用正确的别名,这个 JBoss EAP 6 版本里已修复了这个问题。由此,它不会在产生错误的 SQL。

HornetQ

1019378 - 如果使用分批事务进行分页和读取,消息再分发可能导致消息的丢失。

在罕见的情况下,如果 HornetQ 服务器上带有大块数据的消息被确认得太快,消息再分发可能在事务在分页系统上实例化之前读取记录。这种情况可能会导致消息的丢失。

通过确保分页系统正确地实例化页面事务,并在实例化之后才写入文件,这个 JBoss EAP 6 版本里已修复了这个问题。

由此,在相同的情况下就不会再丢失消息了。
988321 - 警告 - 备份服务器上大型 MessageID 164 的复制不可用。忽略复制消息。

在某种序列的事件后,大型消息的删除可能会被调用两次,导致在备份的 HornetQ 服务器上出现大量的警告信息,类似于:
11:33:23,825 WARN  [org.hornetq.core.server] (Old I/O client worker ([id: 0x2b37b4ea, /192.168.40.1:60844 => /192.168.40.1:5445])) HQ222090: Replication Large MessageID 164  is not available on backup server. Ignoring replication message

通过停止 JBoss EAP 6 日志里出现的大量警告信息,我们解决了这个问题。由此,在备份的 HornetQ 服务器上不再有关于大型消息不可用的大量警告信息了。

安装程序

977736 - 如果为选择 appclient 选项,Appclient 启动脚本和配置文件不应该被安装。

当使用 JBoss EAP 6 安装程序时,即使没有选择 Pack Installation 屏幕上的 AppClient,AppClient 文件仍会被安装。

这个 JBoss EAP 6 版本里已修复这个问题,只有选择了 AppClient+ 复选框时才会安装 AppClient 文件。
1013973 - Installer: 无法使用 Ctrl+c 来退出安装(windows)

指定 JLine 依赖关系时存在的问题会导致在 Microsoft Windows 服务器上的 JBoss EAP 6 安装程序里无法使用 Ctrl-C 键盘命令。

在这个 JBoss EAP 6 版本里,我们已经更新了 JLine,所以在 Microsoft Windows 服务器上的控制台安装过程中输入 Ctrl-C 时,安装程序现在可以正常退出了。也请注意 Insert 键会被读作和 Ctrl-C 相同的字符,如果按它也会退出控制台安装程序。
1013972 - 使用 Tab 自动完成主目录路径无法正常工作

在 JBoss EAP 6 的控制台安装程序里,使用 Tab 来自动完成主目录路径无法正常工作。在 Microsoft Windows 服务器上,没有自动完成主目录路径,而是什么都没显示;而在 Linux 上会错误地插入 /home

这个 JBoss EAP 6 版本已修复了这个问题,所以当输入 ~ 并按 Tab 时,主目录路径将如期自动完成。在 Microsoft Windows 服务器上其路径是 C:\Users\USERNAME,而在 Linux 上是 /home/USER
963304 - 当通过 JAR 安装程序安装 EAP 6 时『Native components』复选框不可见

在类 Unix 操作系统上,如果在 /etc/ 目录里有多个 *-release 文件,安装程序没有正确地检查 system-release 文件。这会导致安装程序不承认服务器操作系统,且在 Pack Installation 屏幕上不显示 Native Components 复选框。这个版本的 JBoss EAP 6 里已经解决了这个问题,安装程序现在可以正确地检查类 Unix 操作系统上的 system-release 文件。由此,Pack Installation 屏幕上的 Native Components 复选框可以正常显示了。

JCA

952277 - 禁用 xa-data-source 会导致这个数据源在重载后变成已启用的。

当 XA 数据源被设置为 disabled 而它之前已经是 disabled 时,下次重启时数据源将被启用。我们已找到其原因并解决了这个问题。在相同的情况下,数据源现在可以保持 disabled 状态了。
1007608 - 如果事务的 hashCode 不稳定则出现内存溢出

我们发现,如果事务的 hashCode 不稳定,JCA TransactionSynchronizer 会出现内存溢出。这会导致在一段时间后抛出 OutOfMemoryErrors。

对 JCA 组件的更新已经纠正了这个潜在的溢出问题,相关的 OutOfMemoryErrors 不会再出现了。

JSF

991276 - 在 EAR 里 WAR_BUNDLE_JSF_IMPL 无法工作

如果 JSF 实现是打包在 WAR 里,那么你可以使用 WAR_BUNDLE_JSF_IMPL 而不是容器的实现。而如果它是打包在 EAR 里就无法使用这个选项。其原因是系统只检查(子)部署的 JSF marker ,导致它位于独立的顶层部署(EAR)时无法被发现。为了解决这个问题,我们实现了对顶层部署的 JSF marker 的额外检查。

Maven 资料库

1011918 - 无法获得 jbossws-cxf-client 的依赖关系 -- 无法找到 org.apache.ws.security:wss4j:jar:1.6.11-redhat-1

这个 JBoss EAP 版本里修改了构建过程来提供更传统的 Maven POM 文件,以和社区 Maven POM 更家一致。EAP Maven 资料库里的这些 POM 文件现在具有和某些社区 artifact 版本的依赖关系了。

用户应该参考《JBoss EAP 开发人员指南》里关于如何配置合适的 Maven POM 文件。配置合适的 Maven POM 文件将确保用户的构建包含正确的过渡性依赖版本(JBoss EAP 版本将用于被支持的 artifact,而社区版本将用于不被支持的 artifact)。

其他

985204 - 当 web executor 丢弃任务时没有关闭套接字

这个 JBoss EAP 版本纠正了一个当 executor 放弃任务时导致 web 连接器套接字没有正确关闭的程序错误。其原因可追溯到当没有设置 handoffExecutor(如 QueuelessExecutor 所为)时 QueueExecutor 没有抛出 RejectedExecutionException。在这种情况下,任务将被放弃,而这并非我们预期的行为。我们已经更新了 QueueExecutor 类来在任务无法添加到队列时抛出所需的异常,因此套接字就可以正确关闭了。
901210 - 清理 deploy 目录 - AS7-6031

这个 JBoss EAP 6.2 版本包含了对这个问题的修复,它确保 JBOSS_HOME/tmpJBOSS_HOME/tmp/vfs 目录里的文件和目录在干扰新启动(重启)的 EAP 实例前被删除。

在以前的 JBoss EAP 6 版本里,当服务器意外地关闭时,旧的文件可能被丢弃不管了(作为服务器关闭过程的一部分,JBoss EAP 应该删除 JBOSS_HOME/tmpJBOSS_HOME/tmp/vfs 里的文件)。

这个版本里附带的修复提供一个失效保护机制来缓和这个问题。如果 JBoss EAP 6.2 服务器没有优雅地关闭,服务器将有机会清理这些临时文件。在重启时,服务器现在会查询上述位置,如果存在之前实例产生的文件,它将初始化一个重命名/删除过程,允许创建新实例的新文件(旧的目录将被重命名以避免和新创建的文件冲突)。这些过程是同时进行的。

在重启 JBoss EAP(优雅地启动或其他方式)时,旧的临时文件将被删除(服务器关闭或重启时),以确保不占用不必要的磁盘空间。

注意 用户应该避免使用 -Xrs JAVA_OPT,因为这会限制信号处理并导致 tmp/vfs 目录的尺寸持续增大。

PicketLink

977761 - ServiceProviderAuthenticator 里的 Post 请求里未使用 PLINK2-25 characterEncoding 参数

我们在 Picketlink 里找到一个关于时机的问题,它导致从 ServiceProviderAuthenticator 里的 post 请求里读取的参数使用了默认而不是所要的编码。当 PicketLink 在 Tomcat Valve 设置编码前读取了这个参数就会导致这个问题。为了解决这个问题,我们移动了编码的设置,使其成为 authenticate 方法里的第一个步骤。

Remoting

1025319 - 从带有/不带有 SSL 的服务器调用 EJB 出现问题

当创建转出的远程连接时,创建连接的服务将在应用用户定义的配置后再应用默认设置。这导致默认的设置不正确地覆盖了具有相同关键字的用户定义设置。

因此,源自服务器的远程 EJB 连接上的 SSL 无法被禁用。

本版本里已修复了这个问题,用户定义的设置现在可以在默认设置后应用,这确保了用户定义的设置被优先处理。

由此,在转出的远程连接上可以禁用 SSL 了。
1025185 - Remoting 子系统: 在服务器关闭时抛出并行修改异常。

Remoting 子系统里的一个服务将以非线程安全的方式迭代集合。

由此,在服务器关闭时偶尔会抛出 ConcurrentModificationException。除了抛出这个异常,服务器的关闭完全正常。
WARN  [org.jboss.msc.service.fail] (MSC service thread 1-55) MSC000004: Failure during stop of service jboss.remoting.endpoint.management.channel.management: java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) [rt.jar:1.6.0_45]
	at java.util.HashMap$KeyIterator.next(HashMap.java:828) [rt.jar:1.6.0_45]
	at java.util.AbstractCollection.addAll(AbstractCollection.java:305) [rt.jar:1.6.0_45]
	at java.util.HashSet.<init>(HashSet.java:100) [rt.jar:1.6.0_45]
	at org.jboss.as.remoting.AbstractChannelOpenListenerService.stop(AbstractChannelOpenListenerService.java:123)
...

本 JBoss EAP 6 版本里已修复了这个问题。集合的迭代现在是以线程安全的方式进行,且集合对象的监控是由迭代线程来进行的。

由此,ConcurrentModificationException 不会再被抛出了。

RPMs

998319 - RPMs 将重要数据放在 /var/tmp 里

RPMs 将重要数据放在 /var/tmp 里,其中包括 /domain/data/var/tmp 本来应该包含可以随时删除的临时数据。/domain/data 不应该被重定向到 /var/tmp/,既然它包含了不应该丢失的重要数据,其中包括恢复日志和 HornetQ 大型消息存储和日志。

这个 JBoss EAP 6 版本里已修复这个问题。对于新的安装,/usr/share/jbossas/domain/data 将是一个目录而不是链接。

然而,对于现有的安装,你必须执行下列动作之一:
  • 重新安装并移植配置和数据文件(包括 temp 目录)到新的安装目录,或者
  • 卸载 tmpwatch 来禁用 /var/tmp/jbossas 的清理,或者
  • 配置 tmpwatch 不要删除 jbossas 放在 /var/tmp/jbossas 里的文件。

脚本和命令

998913 - standalone.bat 仍会设置 -XX:+TieredCompilation JVM 选项

我们解决了 Microsoft Windows 服务器上使用的 standalone.bat 里的一个问题。这个批处理文件之前包含一个 JVM 选项,它设置分层的编译:-XX:+TieredCompilation。我们已经删除了这个设置,因为它会在某些情况下导致性能问题。
916960 - 如果括号出现在 EAP 路径里,Standalone.bat 将无法工作。

以前的 JBoss EAP 版本里提供的批处理文件(如standalone.batadd-user.bat)如果其保存的路径里包含括号或空格,则无法在 Microsoft Windows 服务器上正常工作。我们通过加上引号使完整路径可以正确地被解析。由此,这些路径包括括号和空格的批处理文件可以正常执行了。

安全性

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

在 JBoss EAP 6.1.0 里,对用自定义授权模块保护的 web 应用程序的未授权访问导致了 HTTP 200 (OK) 而不是 HTTP 403 (Forbidden)。我们已经解决了这个问题,现在已提供了正确的响应。

服务器

1022223 - 部署描述符重叠没有覆盖 JSP

部署描述符重叠应该允许管理员覆盖部署里的 JSP。然而,因为 JBoss Web 没有使用 VFS 来服务内容,重叠功能无法实现,所以 JSP 文件也不可见。我们添加对部署方法的额外测试,现在部署描述符的覆盖已可正常进行了。

事务管理者

1016120 - 事务 JDBC 对象库在 PostgreSQL Plus 9.2 上无法启动

JBoss 事务管理者没有正确地为 PostgreSQL Plus 9.2 配置驱动类。这导致在试图在 PostgreSQL Plus 9.2 上使用 JDBC 事务对象库时抛出 ClassNotFoundException

在这个 JBoss EAP 6 的版本里,JBoss 事务管理者更新了 PostgreSQL Plus 9.2 驱动类(jdbc.drivers.postgres_driver), JDBC 事务对象库现在可以和 PostgreSQL Plus 9.2 服务器一起使用了。

Web

997009 - AJP 连接器上的 requiredSecret 属性

当在 JBoss EAP 5.x 之前使用负载平衡的 Apache 服务器时,你可以设置 AJP 连接器的 "requiredSecret" 属性。它用于只允许接受来自具有相同密码关键字的负载平衡器 worker 的请求。

在 JBoss EAP 6.0.x 和 6.1.x 里不可能配置这个值。我们已解决这个问题,现在你可以将系统属性设置为 "requiredSecret" 的值。
org.apache.coyote.ajp.DEFAULT_REQUIRED_SECRET=yoursecretvalue
996558 - Https 在添加 https 连接器后挂起

当通过管理 CLI 添加 HTTPS 连接器时,任何尝试的连接都会挂起,而不管每个命令是否成功完成。这个问题的原因是连接在创建后就会尽快启动,而它的配置还未完成,从而使得连接无法如预期地工作。变通办法是将配置命令包裹在 batch, end-batch 序列里,所以所有的配置语句都会一起完成。我们已解决这个问题的根本原因,现在不管配置语句是在序列或作为管理 CLI 批处理来完成,对 HTTP 连接器的访问都可以成功。

Web 控制台

947913 - 管理控制台: 点击已配置的资源适配器时资源适配器属性变成可编辑的了。

在 Web 管理控制台里查看资源适配器(RA)的属性时,适配器的属性可能变成可编辑的字段,允许现有的字段被修改或删除,或添加新的字段。既然在管理控制台里并没有编辑它们的功能,这些字段应该是只读字段。如果这些字段被编辑,被编辑的值将保持被编辑的形式,而并未保存在资源适配器的配置文件里。我们已经解决了这个问题,现在所有资源适配器的属性都作为只读字段出现。
900063 - 创建自定义处理程序失败时没有显示错误信息

在以前的 JBoss EAP 6 版本里,当在 Web 管理控制台里创建自定义处理程序失败时,用户得不到任何反馈。因此,用户可能会假设自定义处理程序已经创建好了。现在,在这种情况发生时会显示错误信息,用户可以清楚地知道创建失败了。
1012539 - 消息桥设置里的 "Started?" 字段设置不正确

在本版本里,运行时信息字段 Started? 已从 Profile → Messaging → Connections → Bridges 屏幕上删除。

这是因为,我们发现这个字段有时候显示不正确的信息,既然它是不可编辑的,对用户来说也没任何功能。
996889 - 无法修改域里的服务器的端口偏移量

当修改域里的服务器的端口偏移量时失败,出现下列信息:"Internal server error"。底层的原因是 server-config 资源上的 socket-binding-group 的值被取消定义,所以试图修改服务器配置时,Socket binding 选择框里就没有预选的值。因此,符合操作的第一部分会失败。我们已解决了其根本原因,现在域里服务器的端口偏移量可以在 web 管理控制台上进行设置了。

Web Services

1026992 - CXF 更新后 Picketlink STS 无法工作

用于解决 CVE-2013-2133 的补丁暗示着在运行附加到基于 EJB3 的 WS 端点的 JAXWS 处理程序之前进行授权检查。由此,某些 PicketLink 使用场景可能会被影响,因为 PicketLink SAML2Handler 旨在建立之后要使用的安全 principal。

客户可以禁用其他的授权检查并坚持使用现有的 PicketLink 部署,要么设置 org.jboss.ws.cxf.disableHandlerAuthChecks 属性为 true,或者像下面这样指定jboss-webservices.xml 里的 org.jboss.ws.cxf.disableHandlerAuthChecks 属性:
<?xml version="1.1" encoding="UTF-8"?>
<webservices xmlns="http://www.jboss.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.2" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee">

  <property>
    <name>org.jboss.ws.cxf.disableHandlerAuthChecks</name>
    <value>true</value>
  </property>
</webservices>

这个描述符文件应该放在要禁用处理程序授权检查的客户部署的 META-INF 里。

相反,系统属性的设置将影响服务器上的任何部署。

请注意,启用 org.jboss.ws.cxf.disableHandlerAuthChecks 会为 CVE-2013-2133 提供一个易受攻击的系统。如果应用程序指望应用 EJB 方法上声明的安全限制而不将其独立于 JAX-WS 处理程序,那么这个属性就不应该被启用。只有当出于向后兼容以避免应用程序损坏才应该使用这个属性。
988318 - CLI - 在对 webservices 的 wsdl-host 属性执行 undefine 操作并重载后,带有 webservice 的 WAR 可能无法部署。

我们在这个版本里已纠正了当取消定义 wsdl-host 属性时导致应用程序部署失败的程序错误。
999223 - wsconsume.sh 不能使用默认的版本 2.2

在以前的 JBoss EAP 版本里,我们发现在使用 OpenJDK 1.6 时 WSConsume 无法编译 JAXWS 2.2 级别的源码。

本版本里已修复了这个问题。

Weld

956631 - CLONE - 来自其他 web 应用程序的的 Cross-context forward/include 调用会打断 HttpRequestContext 清理过程

对于转发的请求,当处理它的 servlet 已结束,即使它被发送到其他 servlet,WeldListener 都会清理绑定的上下文请求。

所以,当其他 servlet 试图访问上下文时,它会产生一个 NullPointerException

通过在 servlet 被重定向时不清除绑定的上下文,这个 JBoss EAP 6 版本里已修复这个问题。

因此,使用 getRequestDispatcher().include() 来在 servlet 间转发请求不应该再产生和不正确清理 WeldListener 相关的异常。
910185 - Weld 的 TypeSafeObserverResolver 缓存是未绑定的

TransactionalObserverNotifier 使用的 Weld 类 TypeSafeObserverResolver 没有限制或使条目过期的任何配置选项。通常 CDI 限制符的数目是很小的,但如果应用程序使用 AnnotationLiteral-derived 类并在注解里使用任意数据时就未必是这样了。

因此,TypeSafeObserverResolver 缓存可能增长到非常大并在使用大量的不同的限制符时导致 OutOfMemoryError。

通过实现 TypeSafeObserverResolver 里解析的缓存的可配置上边界,这个 JBoss EAP 6 版本里已修复这个问题。

用户可以配置 org.jboss.weld.resolution.cacheSize 属性来限制解析的缓存条目的最大数目。最大边界的默认值是 1048576。

Web Services

969924 - CXF 更新后 Picketlink STS 无法工作

用于解决 CVE-2013-2133 的补丁暗示着在运行附加到基于 EJB3 的 WS 端点的 JAXWS 处理程序之前进行授权检查。由此,某些 PicketLink 使用场景可能会被影响,因为 PicketLink SAML2Handler 旨在建立之后要使用的安全 principal。

客户可以禁用其他的授权检查并坚持使用现有的 PicketLink 部署,要么设置 org.jboss.ws.cxf.disableHandlerAuthChecks 属性为 true,或者像下面这样指定jboss-webservices.xml 里的 org.jboss.ws.cxf.disableHandlerAuthChecks 属性:
  <?xml version="1.1" encoding="UTF-8"?>
  <webservices xmlns="http://www.jboss.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="1.2" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee">

    <property>
      <name>org.jboss.ws.cxf.disableHandlerAuthChecks</name>
      <value>true</value>
    </property>

  </webservices>

这个描述符应该放在将禁用处理程序授权检查的自定义部署的 `META-INF` 里。相反,系统属性的设置将影响服务器上的任何部署。请注意,启用 `org.jboss.ws.cxf.disableHandlerAuthChecks` 会为 CVE-2013-2133 提供一个易受攻击的系统。如果应用程序指望应用 EJB 方法上声明的安全限制而不将其独立于 JAX-WS 处理程序,那么这个属性就不应该被启用。只有当出于向后兼容以避免应用程序损坏才应该使用这个属性。

mod_cluster

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

JBoss EAP 6.1.0 和 6.1.1 里找到的一个回归导致 /conf.d/mod_cluster.conf 里设置了 CreateBalancers 1 而没有设置 stickysession=JSESSIONID|jsessionid,从而引起分段错误。JBoss EAP 6.2 里已经解决了这个问题。stickysession 元素已被添加到 CreateBalancers 配置里了。
960243 - ProxyPass 集成里的回归

当访问目录时(例如 <filename class="directory">/app/clusterbench/requestinfo/</filename>.),早期版本的 mod_proxy_cluster.so 里的一个回归(bug 960246)返回 HTTP 503。这个 JBoss EAP 版本里已经纠正了这个错误,现在访问目录时 mod_proxy_cluster.so 已正常运行了。
963720 - mod_cluster: Solaris 上 IPv6 的代理 DNS 查找失败

在以前的 EAP 6 里,我们发现在 Solaris 系统上使用 IPv6 地址会导致 DNS 查找错误。

这个问题可以追溯到 IPv6 地址的 IPv6 zone-id 字符串。

既然这个信息对于 HTTPD 是无用的,这个字符串不会被使用,所以 mod_cluster 可以在 Solaris 系统里正常工作了。

7.2. 增强

域管理

978984 - 更新 add-user 工具,允许文件名的覆盖。

我们增强了添加用户的脚本( adduser.shadduser.bat),现在允许为用户和组指定不同的属性文件。

用户文件可以用 -up--user-properties 参数来指定。

组文件可以用 -gp--group-properties 参数来指定。

用法示例:
[admin@server bin]$ ./add-user.sh -up audit-users.properties -gp audit-groups.properties

注意

add-user 命令的目的是在现有的属性文件上操作。命令行参数里指定的任何其他属性文件都必须存在,否则会显示这样的错误信息:"JBAS015234: No audit-users.properties files found"。

EJB

981341 - 在启动/停止 MDB 递送里添加 CLI 操作

这个版本的 JBoss EAP 6 包含了新的 DeliveryActive 激活配置属性,它只用于 MDB 组件来激活或取消激活消息的递送。

你现在可以使用管理操作 :start-delivery:stop-delivery(和只读的 delivery-active 运行时属性)来启动/停止 MDB 资源上的递送(位于/deployment=deployment_name/subsystem=ejb3/message-driven-bean=mdb_name)。

在默认情况下,新属性会被激活且只要 MDB 被部署,消息递送就会尽快进行。

Hibernate

952284 - synonyms 上的 Hibernate SchemaValidation

我们增强了 JBoss EAP 6,提供了根据表 synonyms 检验 Hibernate Entity 的能力。以前,模式检验只能检验表和视图。

要启用这个功能,你必须设置 hibernate.synonyms=true

例如,下列代码将传入 Hibernate 模式检验:
"CREATE SYNONYM foo_synonym FOR foo_table"

@Table(name = "foo_synonym")

安装程序

1013954 - 安装程序:添加修改域管理端口的能力

我们已经更新了 JBoss EAP 6 安装程序以允许为域模式的服务器配置管理端口。之前,安装程序可以为独立服务器配置管理端口,而对域服务器的配置需要在安装后通过配置文件手动配置。

这个安装程序的增强允许在安装时配置域服务器的管理端口,而无需在以后手动进行配置。
900724 - 让安装程序接受其他位置的自动化配置文件

JBoss EAP 6 现在接受网络位置的自动化配置文件。

以前,自动化配置文件必须位于安装程序运行的机器上。

自动化配置文件可以用下列语法通过 http 或 ftp 指定为网络位置:

java -jar installer.jar http://network-host/automation.xml or java -jar installer.jar ftp://network-host/automation.xml
1006548 - 安装程序: 创建 infinispan 缓存

JBoss EAP 6 已被更新以提供配置 Infinspan 缓存的能力。

以前,Infinspan 缓存的配置必须在安装了 JBoss EAP 6 以后才能手动完成。

在这次改进后,Infinspan 缓存的配置可以在安装时完成,无需在以后手动配置。
1006532 - 安装程序: JDBC 驱动

我们已改进 JBoss EAP 6 来提供安装 JDBC 驱动的能力。可以使用这个功能来进行安装的 JDBC 驱动包括:
  • IBM DB2
  • Microsoft SQL Server
  • MySQL
  • Oracle
  • PostgreSQL
  • Sybase

以前,JDBC 驱动只能在 JBoss EAP 6 安装后才能手动安装。

在这次改进后,JDBC 驱动现在可以在 JBoss EAP 6 安装过程中安装,无需等到以后手动安装了。
1006533 - 安装程序: 添加了安全域的配置

JBoss EAP 6 已被增强以提供配置安全域的能力。

以前,安全域只能在 JBoss EAP 6 安装后才能手动安装。

在这次改进后,安全域可以在安装时配置,无需在以后手动配置。
1006535 - 安装程序: 添加密码库的配置

JBoss EAP 6 已被增强以提供配置密码库的能力。

以前,密码库只能在 JBoss EAP 6 安装后才能手动安装。

在这次改进后,密码库可以在安装时配置,无需在以后手动配置。
1006540 - 安装程序: 启用 LDAP 验证

JBoss EAP 6 已被增强以提供在管理界面上配置 LDAP 验证的能力。

以前,LDAP 验证只能在 JBoss EAP 6 安装后才能手动安装。

在这次改进后,LDAP 验证可以在安装时配置,无需在以后手动配置。
901180 - 安装程序: 添加 SSL 密钥库到管理界面里

JBoss EAP 6 已被增强以提供用于配置设置管理界面安全性的 SSL 密钥库的能力。

以前,管理界面的 SSL 的配置必须在安装了 JBoss EAP 6 以后才能手动完成。

在这次改进后,用于管理界面的 SSL 密钥库可以在安装时配置,无需在以后手动配置。

脚本和命令

732889 - 将 JBoss 安装为 Windows 服务的说明无效

管理将 JBoss EAP 安装为 Windows 服务的 service.bat 批处理文件已经升级并带有改进的错误检查。添加的检查的目的是检测可能阻止服务正常运行的条件。

Web 控制台

990879 - 管理控制台包含了社区品牌

在 JBoss EAP 6.1.1 里,web 管理控制台显示了 AS7 的 favicon,而不是红帽的图标。我们已经纠正了这个问题,现实可以现实正确的图标了。

Web Services

999570 - 客户端的 CXF 总线错误地缓存了服务端点信息

这个版本的 JBoss EAP 6 包含了新的功能,允许用户在新的总线里创建JAXWS 客户,它的 WSDL 定义缓存将为空。

因为 WSDL 定义缓存在服务被创建的 JAXWS 客户的 Apache CXF Bus 里,如果在指定的 URL 上使用不同的 WSDL 但相同的总线,就可能使用过时的定义。本次增强提供了避免这种情况的一种方法。

这个新的功能通过新的 org.jboss.wsf.stack.cxf.client.UseNewBusFeature JBossWS JAXWS 特征来使用:Service service = Service.create(new URL(wsdlLocation), new QName(…), new org.jboss.wsf.stack.cxf.client.UseNewBusFeature());

JMS

1011074 - 在分布式配置上将 address-full-policy 的值从 BLOCK 修改为 PAGE

在以前的 JBoss EAP 版本里,JMS 配置属性 address-full-policy 被设置为 BLOCK,表示一旦到达发送至给定地址的最大消息数目,生产者将被阻止发送更多的消息。

我们修改了这个行为以更符合用户的期望。新的默认设置是 PAGE,表示消费者到达最大能力时将接收到的消息存储到磁盘。如果这些消息没有被消费,它们将占据磁盘空间。

你可以设置 address-policy-full 回 BLOCK(其他选项还有 DROP 和 FAIL)来修改这个行为。

日志

999665 - [ERD] EAP62_1120 [RFE] 重启后的新日志文件

SizeRotationFileHandler 有一个新的属性 RotateOnBoot,它将导致文件处理程序在服务器重启时创建一个新的文件。

7.3. 已知问题

CLI

1031173 - 当 EAP 被安装到含有空格的目录里,jboss-cli.bat 无法运行。

如果 JBoss EAP 安装在包含空格或其他特殊字符(如路径里有括号)的目录里,jboss-cli 工具在 Microsoft Windows 服务器操作系统里无法成功启动。如果 JBoss EAP 安装在 C:\JBoss EAP\jboss-eap-6.2 下,下列错误信息将会显示:
Error: Could not find or load main class EAP\jboss-eap-6.2\bin\jboss-cli-logging.properties

绕开的办法是编辑 jboss-cli.bat 文件,将 jboss-cli.bat 的第 62 行里的第一个“"”字符从 JAVA_OPTS 的开头移至最后,类似于:
set JAVA_OPTS="%JAVA_OPTS% -Djboss.modules.system.pkgs=com.sun.java.swing -Dlogging.configuration=file:%JBOSS_HOME%\bin\jboss-cli-logging.properties"

当然,将 JBoss EAP 6 安装在不包含空格或括号的目录里也可以避免这种错误。

以后的版本里将修复这个问题。
1019232 - 在 data-source 节点使用 tab complete 时 jboss-cli.sh 抛出 NullPointerException

在某些情况下,当用户试图使用 tab completion 功能时,jboss-cli 工具将抛出异常并退出。其中一种情况是当使用 built-in data-source 操作 data-source --name=ExampleDS a 然后按 TAB 键。这是由于在命令解析器里缺乏对这些情况的处理程序,我们在以后的版本里会解决这个问题。
988283 - CLI GUI -『write attribute』对话框里的字符串值,应该用双引号括起来。

试图用 jboss-cli 工具设置包含属性的值将只会保存字符 $ 而不是属性,除非整个值用双引号括起来。 这是因为 CLI 命令行解析器错误地解析了任何 ${X} 表达式为 $,除非整个表达式是用双引号括起来的。

解决办法是用双引号将表达式括起来,例如:
[standalone@localhost:9999 subsystem=webservices] :write-attribute(name=wsdl-host, value="${jboss.bind.address:127.0.0.1}")

请注意,jboss-cli 在 GUI 模式下生成的命令不会自动包含引号。

群集

900378 - 带有 SET 复制触发器的 CDI bean 没有复制

由于 Weld 组件里的一个程序错误,setAttribute 方法没有被正确调用。这导致带有 SET 复制触发器的 CDI Bean 不能进行复制。绕开问题的办法是使用 SET_AND_NON_PRIMITIVE_GET 触发器。这个问题将在以后的版本里得到解决。
900483 - 在节点关闭时使用 DIST SYNC 会接收到过时的会话数据

在测试过程中,某些用例显示当关闭节点且使用 DIST SYNCDIST ASYNC 缓存模式时接收到了过时的会话数据。我们仍在调查这个问题。

文档

1026813 - 描述 servlet 的 init 方法抛出异常时的行为的实现细节

Servlet 规格没有定义当 servlets 在其 init() 方法或 ServletContextListener.contextInitialized 抛出异常时服务器的行为,而《JBoss EAP 开发人员指南》也没有提供关于这种情况下 JBoss EAP 6 的行为的解释。

JBoss EAP 6 在这些情况下的行为可总结如下:
  • 如果 servlet init() 方法抛出异常,应用程序将仍可以部署但 servlet 不可用。
  • 如果 ServletContextListener.contextInitialized 抛出异常,部署将会失败。

以后的《JBoss EAP 开发人员指南》将提供更多细节。
1021607 - RBAC: 解释两种 non-addressability

有些资源对于作用域为 server-group 和 host 的角色是不可寻址的,这是为了提供管理模型的简化视图来提高可用性。这和处于保护敏感数据的不可寻址的资源是不一样的。

对于作用域为 server-group 的的角色,这意味着如果管理模型的 `profile`, `socket binding group`, `deployment`, `deployment override`, `server group`, `server config` 和 `server` 部分对于为角色指定的服务器组不相关,它们就不可见。

对于作用域为主机的角色,这表示管理模型的 ‘/host=*’ 部分里的资源如果和指定的服务器组不相关联,它们会不可见。

然而,在某些情况下,这种简化的视图可以隐藏超出用户管理的作用域的信息,这可以为用户提供指导。其中一个例子是 http://bugzilla.redhat.com/show_bug.cgi?id=1015524

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

域管理

1015524 - RBAC: 无法部署已被用户从其他服务器组作用域部署的相同部署

当启用了基于角色的访问控制时,具有服务器组作用域的管理用户可能会部署新部署失败,错误信息如下:
"JBAS014807: Management resource '[(\"deployment\" => \"example.war\")]' not found"

这是因为具有相同名称的部署已经存在于域里了。这是正常的行为。然而,因为管理用户作用域是服务器组(server-group),他们无法看到这样的部署是否已经存在于另外一个服务器组里。这使得我们很难去避免这种错误。

为了绕过这个限制,红帽推荐要么无作用域的角色分配给负责添加部署到域里的用户,要么维护一个部署名称列表以供管理用户使用。
1034700 - 启用安全管理者时 whoami 操作无法执行

当 JBoss EAP 6 启用了 Java 安全管理者时,:whoami 操作无法正确执行。试图运行这种操作会导致 IllegalArgumentException 类型的异常抛出。
1035231 - RBAC: 访问控制无法和安全管理者一起使用

当 JBoss EAP 6 启用了 Java 安全管理者时,基于角色的访问控制系统会实际上被禁用,因为在这种情况下所有已验证的用户都被视作超级用户。唯一的办法是不启用 Java 管理者。
1035232 - EAP 域模式无法与安全管理者一起正常运行

如果受管域里的服务器使用了 Java 安全管理者而没有制定它的类名,服务器会无法成功启动。这通常是因为在使用默认的安全管理者时在 domain.conf 或命令行参数里指定了 -Djava.security.manager

在这种情况下,服务器会启动失败并显示下列信息:
                    Error occurred during initialization of VM java.lang.InternalError: Could not create SecurityManager: true

这是因为主机控制器将未设置值的系统属性传入到受管服务器并将属性设置为 true。这意味着服务器将试图使用类名为 true 的 Java 安全管理者。为避免这种情况的发生,请在配置文件里显性地定义默认安全管理者的类名如下:
                    -Djava.security.manager=java.lang.SecurityManager
1021607 - RBAC: 解释两种 non-addressability

有些资源对于作用域为 server-group 和 host 的角色是不可寻址的,这是为了提供管理模型的简化视图来提高可用性。这和处于保护敏感数据的不可寻址的资源是不一样的。

对于作用域为服务器组的角色,这表示管理模型的 profile, socket binding group, deployment, deployment override, server group, server configserver 部分里的资源如果和指定的服务器组不相关,它们会不可见。

对于作用域为主机的角色,这表示管理模型的 /host=* 部分里的资源如果和指定的服务器组不相关联,它们会不可见。

然而,在某些情况下,这种简化的视图可以隐藏超出用户管理的作用域的信息,这可以为用户提供指导。其中一个例子是 1015524

在以后的版本里,这些不可寻址的资源中的一些可能会改成可寻址但不可读的。这不会影响到服务器的安全性,因为出于安全原因,它们是不可寻址的。红帽推荐你不依赖于资源的不可寻址性(non-addressability)来隐藏信息,除非是在敏感性约束里定义的不可寻址性。
1024109 - DelegatingServerInventory 里出现 NPE

在主机控制器启动后立即发送管理请求给它可能会失败并抛出 NullPointerException。这是因为主机控制器能够处理请求和服务器管理系统完全启动之间有一段时间间隔。这个间隔通常少于一秒,但期间的任何请求都会接收失败。

这应该只发生在自动化环境里,如有脚本启动控制器并立即在其中一个服务器上调用管理操作。

目前,对于这种脚本或其他任何在启动主机控制器后立即执行管理操作的自动化步骤,红帽推荐下面的变通办法:
  1. 包含轻微的延迟(一或两秒)以允许所有主机控制器系统有足够的时间完全启动。
  2. 包含错误处理逻辑。
  3. 当服务器启动时,使用轮询逻辑来处理请求结果。

以后的版本里将修复这个问题。

EJB

1019372 - 群集节点选择过程无法区分节点是否能够处理 EJB 请求

当群集没有将相同的 EJB 部署在每个节点上时,客户 EJB 调用有时候会导向到没有部署 EJB 的群集节点。这是因为 ejb-client 在发送请求前没有确认目的地节点能够处理调用。ejb-client 现在可以执行这种确认,而调用会被分发到正确的节点了。
1017673 - TimerService.getTimers() 里出现 ConcurrentModificationException

如果 bean 试图在另外一个线程调用 getTimers() 方法的同时创建一个新的定时器,就会抛出异常。这是因为 getTimers() 方法没有调用定时器上的 synchronized()。我们在以后的版本里将解决这个问题。

Hibernate

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

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

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

安装程序

1032892 - 在 Windows 里对于以盘符开头的路径无法使用 tab 键填充。

在 Microsoft Windows 服务器上的 JBoss EAP 6 控制台安装程序里,以盘符开头的目录路径无法使用 tab 键来完成。

当输入以盘符开头的路径时,如 C:\,然后按 Tab 键,系统不会显示任何东西。本来系统应该显示该目录的内容。

以后的版本里将修复这个问题。
977805 - 在 Solaris 里无法从开始菜单启动 JBoss 管理控制台

对于使用安装程序安装的 JBoss EAP 6 实例,无法使用 Solaris 上的管理控制台的启动菜单快捷键。

不会在 web 浏览器里打开管理控制台,而是显示下列错误信息:
Error showing url: HTTP Error: Method Not Allowed

这是因为 Solaris 上的 xdg-open 命令无法正常运行。

变通办法是通过 Web 浏览器直接访问管理控制台。如果是使用的默认端口,管理控制台的 URL 应该是: 对于独立服务器:http://localhost:8080/console 对于域模式: http://localhost:9990/console

JCA

1033008 - 通用的 JMS RA 和 EE 规格不一致 - 当会话是在事务上下文里创建时它*没有*忽略参数。

当会话是在事务的上下文里创建且参数被传入通用的 JMS 资源适配器里时,Null Pointer Exception (NPE)将会出现。这是因为当尝试处理参数时,Java EE 声明它们应被处理。其根本原因我们还在调查,变通办法是象下面的例子设置会话。使用这个变通方法,NPE 将不会出现了。
connection.createSession(true, Session.SESSION_TRANSACTED);
1023193 - 在定期崩溃恢复过程中 JMS generic RA 显示 'lock owned during cleanup' 警告

我们已经确定了和定期恢复相关的一个小问题,以下面文本开头的警告信息将被记录日志。
WARN  [org.jboss.resource.adapter.jms.JmsManagedConnection] (Periodic Recovery) Lock owned during cleanup: java.lang.Throwable: Lock owned during cleanup

这个问题的底层原因是通用 JMS 适配器错误处理了第二个定期恢复调用。依照 Object Transaction Service 规格,当事务管理者是运行在 JTS 上时,定期恢复调用会用相同的 XID 回滚两次。通用 JMS 适配器错误地处理具有系统 XID 的回滚的第二次调用,从而登记了上述警告信息。请注意不管是什么警告信息,恢复过程还是会正确完成。
991389 - Connection factory isn't activated in 在服务器用 JTS 事务模式集重载后,generic-jms-ra.rar 资源适配器里的连接工厂未被激活。

当 JBoss EAP 服务器用 generic-jms-ra.rar 部署的资源适配器进行配置时,服务器重载时连接工厂会被取消注册。原因是如果事务子系统被配置成运行在 JTS 上,通用资源适配器没有正确处理重载。我们正在调查其根本原因。

变通办法是在 RAR 归档里添加一个指定了连接属性的 JCA 描述符 XML 文件。

JSF

1029387 - WFLY-2493 EL 无法访问 non-public 类的 public 方法/字段

当通过 EL 访问 non-public 类的 public 方法或字段时会显示下列错误信息:
"java.lang.IllegalAccessException: Class javax.el.BeanELResolver can not access a member of class X with modifiers "private"

要绕过这个问题,请在调用方法前设置 SetAccessible(true),这将忽略 Java 的访问检查。
1017242 - 在根上下文应用程序里 FacesMessages 无法正常运行

JBoss EAP 6.2 附带的 JSF 组件有一个已知问题。已有报告表示当在根上下文里运行应用程序时,FaceMessages 不可靠。我们将在以后的版本里解决这个问题。

其他

901231 - 在 IBM JDK 上使用 finalize() 需要格外小心

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

在这个问题得到解决之前,红帽推荐你不要使用 IBM JDK 6 或 7 来运行 JBoss EAP 6。

脚本和命令

956281 - 在 Windows 里的 32 位 JVM 上启动 EAP 6.1 可能导致启动 JVM 失败

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

安全性

979369 - 和程序里登录一起使用时 HttpSession 创建的行为不一致

我们发现 HttpSession 在和程序里登录一起使用时其创建的行为会不一致。
  • 不使用 SSO: 当调用 login() 方法时不会创建会话 - 也就是,随后的请求是未经验证的;
  • 使用非群集的 SSO:当调用 login() 方法时会创建会话,但第一次调用不会设置验证状态 - 也就是,随后的请求是未经验证的;而用户在第二次调用 login() 方法后会被验证,因为会话已经存在了。
  • 使用群集的 SSO: 当调用 login() 方法时会创建会话且随后的请求是已验证的。

我们正在调查导致不同行为的原因。目前还没有变通办法。

服务器

1036872 - 无法配置禁用在 JRE 的 java.security 文件里指定的策略文件的安全策略文件设置

我们已经确认使用特殊的前缀 = 来禁用默认的策略文件会出现问题。底层的原因是当主机控制器启动服务器时,它提供 null 作为 java.security.policy 设置的值,导致使用 java.security 里指定的策略文件且权限问题可能会阻止服务器引导。

有几个变通的办法:

1) 编辑 JVM 的 java.security 文件(通常位于 $JAVA_HOME/lib/security/java.security)并注释任何 "policy.url" 设置,例如:

#policy.url.1=file:${java.home}/lib/security/java.policy #policy.url.2=file:${user.home}/.java.policy

请注意这将禁用这些策略文件被 JVM 安装的任何用户使用。如果你对此有所担心,你最好设置一个单独的 JVM 安装以用于 EAP 并修改其配置。

2) 从 java.security.policy 值里删除领头的 "=";例如

-Djava.security.policy=$PWD/server.policy

使用这些步骤,则只有指定文件里的设置才会被使用。

事务管理者

1027126 - 服务器用 standalone-xts.xml 和运行在 mysql 5.5 上的 jdbc 对象库无法启动。

当配置事务管理者来运行 XTS 事务,且使用基于 MySQL 5.5 的 JDBC 对象库、驱动放在 deployments 目录下时,服务器无法启动。错误结果包含 New missing/unsatisfied dependencies 等信息。在使用其他数据库时不会发生这个错误。我们正在调查这个问题,在以后的版本里希望能解决它。
1017816 - 无法在 EAP 配置里将 UID 的生成从 uuid 修改为套接字

当进程 ID 生成方法被修改为 process-id-socket-binding 而不是 process-id-uuid 时,以下面的文本结果开始的错误将会显示:
                        ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 44) JBAS014613: Operation ("add") failed - address: ([("subsystem" => "transactions")]) - failure description: "JBAS014746: process-id-uuid may not be null"

造成这个问题的原因是配置参数的处理不正确。在以后的版本里我们将解决这个问题。目前没有变通办法,所有你必须使用默认的进程 ID 生成方法。
1009981 - 已提交的事务上的定期恢复

当服务器处于过度负载时,服务器的日志可能包含下面的信息,表示事务回滚已经发生。
WARN  [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_NOTA: javax.transaction.xa.XAException
at org.hornetq.core.client.impl.ClientSessionImpl.rollback(ClientSessionImpl.java:1699) [hornetq-core-client-2.3.12.Final-redhat-1.jar:2.3.12.Final-redhat-1]   
at org.hornetq.core.client.impl.DelegatingSession.rollback(DelegatingSession.java:494) [hornetq-core-client-2.3.12.Final-redhat-1.jar:2.3.12.Final-redhat-1]
at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.rollback(HornetQXAResourceWrapper.java:126) [hornetq-jms-server-2.3.12.Final-redhat-1.jar:2.3.12.Final-redhat-1]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.handleOrphan(XARecoveryModule.java:755) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecoverySecondPass(XARecoveryModule.java:661) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:431) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:212) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]
at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-jacorb-4.17.15.Final-redhat-4.jar:4.17.15.Final-redhat-4]

在重负载下,事务消耗的处理时间和定期恢复进程的活动时机可能重叠。定期恢复进程检测到事务仍在处理并试图进行回滚,但实际上事务将继续完成。当定期恢复进行尝试但回滚失败时,它会在服务器日志里记录这次失败的回滚。我们在以后的版本里将解决底层的问题,现在有一个变通方法。

通过设置 com.arjuna.ats.jta.orphanSafetyInterval 为比默认的 10000 毫秒更高的值,增加恢复进程的两个阶段间的间隔。我们推荐使用 40000 毫秒。请注意这并不会解决这个问题,而只是降低发生的可能性并减少日志里的警告信息。

Web

918130 - 在 EAP 6 里,JBossWeb 连接器在应用程序部署完成前启动

我们发现了一个关于JBossWeb 连接器在启动时的时机问题。在应用程序完全部署之前,当连接器启动并接受请求时会有问题。此时,通过负载平衡器或直接连接的客户连接会返回 404 消息。这个问题影响了 Java EAP 6.0.1 及更高的版本。目前还没有变通办法,但我们正在进行调查。

Web 控制台

995439 - JTS 事务没有正确启用

当在 web 管理控制台的 Transactions 部分启用 JTS 时("Profile → Container → Transactions"),你有必要在 JacORB 子系统里设置属性 transactionson。预期的行为是当 JTS 被启用时事务也被启用。我们还在调查其中的原因,在解决这个问题之前,变通办法是确保 transactions 属性也被设置为 on。请注意事务子系统仅在 fullfull-ha 配置集里可用。
1014048 - RBAC: 在域模式里登出后立即登录无法正确清除 UI。

在某些情况下,当登出 Web 控制台而在其他用户登入前,控制台将部分地呈现。这会导致“混合的”内容,屏幕的一部分会显示旧的用户已登录的信息,而另一部分是新用户登录的信息。变通办法是关闭浏览器(而不仅仅是活动页)再用新用户登录。
1014219 - RBAC: 对于具有多重作用域角色的用户控制元素的可见性

在这个 JBoss EAP 6 版本里,某些分配了多重角色的用户会在控制台里看到它没有执行权限的操作。例如,具有角色 host-master-administratorhost-slave-monitor 的用户在主机从服务器场景里应该只能看到控制元素(如服务器配置页面上的 Add 按钮)。在主机主服务器场景里,这个按钮应该是不可见的(然而确实可见)。

如果在执行操作时强制了正确的访问控制,不该可见的操作应该无法执行。这并没有违背安全性。

目前还有没有绕过这个问题的办法,然而我们将在以后的版本里解决它。
1026823 - 提供了一个可靠的方法来清除 "Run as" 对话框设置的 "ROLE" 头部信息

在这个版本的 JBoss EAP 6 里,当超级用户(Superuser)代替其他用户(使用 Run As…)运行时,它们的角色在动作结束后没有复位。

绕过的办法是关闭浏览器窗口(而不仅仅是活动标签页)并重新访问 Web 控制台。在以后的版本里我们将解决这个问题
1017655 - Web services 配置校验错误

在这个 JBoss EAP 6 版本里,Web 控制台不会拒绝配置集 > Web > Web Services 下的无效值 WSDL HostWSDL PortWSDL Secure Port

某些无效值会导致错误信息,而其他无效值会被忽略而不会显示错误信息。配置里不存储任何无效值。

以后的版本里将解决这个问题。
1016546 - RBAC: [Usability] 当试图配置 Auditor 角色为管理员时出现不清楚的错误信息。

当用户没有执行操作的权限时,普通的错误信息显示为:""。这个错误信息会令人迷惑,因为用户试图执行操作而不是访问某个资源。

在这个 JBoss EAP 6 版本里,如果用户试图执行它没有权限的操作时,它们将接收到下列错误消息:
你没有访问这个资源的权限!

当用户试图执行操作而不是访问资源时,这会使用户迷惑。在将来的版本里我们将给出更具体的错误信息。
1029851 - 管理控制台 - 即使在取消了上传部署文件之后,其内容仍被添加到了数据目录里。

这个 JBoss EAP 6 里存在一个已知问题,通过『Manage Deployments』屏幕上传文件总可以完成,即使用户已经取消了上传。

取消这个操作会导致上传的文件被添加到 data 目录,同时阻止文件被添加为 domain.xml 里的部署。这意味着这个文件无法从 CLI 或 Web 管理界面进行删除。

我们在以后的版本里将解决这个问题。
1027586 - RBAC: 对于应用程序资源,Web 控制台过于粗颗粒度了。

在这个版本里的 JBoss EAP 6 里,当资源被定义为应用程序资源时,控制台可能无法反映这种定义。这是因为控制台通常将几个资源分组到一个视图里。如果所有相关的资源都是可写入的,那么视图里的控件就是可用的。而如果任何资源被配置为应用程序资源,相关的控件仍然是被禁用的。

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

Web Services

900032 - JBossWS IPv6 问题

mod_cluster

980246 - mod_cluster-manager 可能分断单个虚拟机的别名,导致页面乱码。

在这个版本的 JBoss EAP 里,当部署多个应用程序,而每个应用程序都带有唯一的虚拟服务器且虚拟服务器具有多个别名时,mod_cluster_manager 可能会不正确地多次显示相同的虚拟主机(每个别名都显示一次)。

这不是我们期待的行为,也就是所有的虚拟主机和所有别名只显示一次。我们正在调查这个问题,在以后的版本里将解决它。
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

我们正在调查这个问题的原因。
1030965 - 注册上下文的数量对 mod_cluster 的性能有负面影响

我们在将 mod_cluster 配置为负载平衡器的 Apache HTTP 服务器上确定了一个性能方面的问题。workers->nodes 表上的 httpd 共享内存操作对负载平衡器有着负面的影响。由此,当注册上下文的数量增加时,httpd 负载平衡器的性能会递减。

要绕过这个问题,请降低已注册上下文的数目。

目前的解决方案是修改 httpd 以利用本地内存而不是共享内存。在以后的版本里我们将修复这个问题。
900047 - Linux/Unix 里 SystemMemoryUsageLoadMetric 不正确

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

Apache 服务器(httpd)和连接器

900620 - 如果使用 UAC(Windows Server 2008 R2),APR natives 不会被加载。

在 Microsoft Windows 服务器上,如启用了用户帐号控制(UAC),Apache portable runtime (APR) 库将无法加载。在安装了这些库后,管理员将需要在 Properties -> Security 标签页里右击 JBoss 目录并为需要的用户设置 “Full control” 为 ”Allow“。这将纠正 UAC 的访问权限。

域管理,Web Services

987898 - 用 'Unknown attribute wsdl-url' 而不是 'Attribute wsdl-url is not writable' 写入 WS 端点的 wsdl-url 属性。

已部署哦 SOAP Web 服务端点(name, context, class, type 和 wsdl-url)的 5 个属性在管理工具里是不可访问的。这是因为它们没有通过 Web Services 子系统开放给管理模块。我们在以后的版本里将解决这个问题。

EJB,命名

923836 - IBM JDK 无法在 SSL 使用 remote:// 协议

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

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

我们正在调查和解决这个问题

对 IPv6 的支持

900609 - 当服务器绑定到 IPv6 时,Windows 上有打开的 IPv4 套接字。

如果 JBoss EAP 6 在 Microsoft Windows 服务器上启动,禁用 IPv4 而启用 IPv6,IPv4 套接字将仍被打开。我们正在调查这个问题。
900564 - 日志条目里错误的 IPv6 地址格式

IPv6 地址应该用方括号 ([ 和 ]) 格式化,如 http://[2620:52:0:105f::ffff:2]:9990,但 JBoss EAP 6 里的日志文件里缺失了括号。我们将在以后的版本里解决这个问题

JDR

917683 - JDR 工具生成在 Windows 上运行的错误的归档条目名称。

在 Microsoft Windows 服务器环境里使用时,JDR 工具里发现了一个程序错误。这个工具将原来的 $JBOSS_HOME 目录的最后一个字符附加到在归档里创建的 JBOSS_HOME 目录上。

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

我们正在调查这个程序错误的原因,暂时还没有解决办法。

RESTEasy

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

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

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

A. 修订历史

修订历史
修订 2.0-18.5Mon Jun 23 2014Xi Huang
翻譯、校閱完成
修订 2.0-18Wed Dec 4 2013Russell Dickenson
纠正语言的使用来澄清 IBM JDK 在红帽企业版 Linux 里的问题。
修订 2.0-17Wed Dec 4 2013Russell Dickenson
JBoss 企业级应用程序平台 6.2.0 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.