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 系统里正常工作了。