6. 本版本里的修改
6.1. 程序错误修复 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Apache 服务器(httpd)和连接器
- 900363 - JK Status Manager 无法运行
- Apache mod_jk 包含 Status Manager API。当操作使用它来运行时没有应用修改,不管是通过 API 还是 JK Status Manager web 接口。这是由于共享内存同步的一个错误引起的。其根本原因现已修复,使用 Status Manager 的存在已可以正常执行了。
群集
- 900392 - 单点登录服务可能失败,抛出异常 "IllegalStateException: JBAS010350: Expected result from singleton provider only, but instead received 0 results"
SingletonService有时会失败,日志会有下列输出:IllegalStateException: JBAS010350: Expected result from singleton provider only, but instead received 0 results这个错误发生在getValueRef方法里且在发生视图更改时被触发,这是因为旧的主节点已停止而新的主节点仍在启动。为了解决这个问题,我们修改了getValueRef,当没有结果返回时它会重试。SingletonService现在已可以正常运行了。- 920367 - 非可分布式应用程序出现 ClusteredSingleSignOn ClassCastException
- 901028 - CLONE AS7-5688 ISPN000136: Execution error: java.lang.NullPointerException -> JBAS018079: Failed to passivate session
- 947420 - 启用会话钝化时在 [0] 毫秒后无法获得锁
控制台
- 900849 - 当数据大于 64k 时出现 EAP6 CLI 错误
- 返回长度超过 65535 个字符的任何 CLI 命令都会失败,错误信息如下:
Communication error: java.util.concurrent.ExecutionException: Operation failed这是由于使用 JBoss DMR 库里的java.io.DataOutput.writeUTF()方法造成的。如果被处理的字符串超出 65535 个字符,这个方法会抛出UTFDataFormatException。我们已更新 JBoss DMR 库以使用其他技术来正确处理超过这个长度的字符。现在,任何返回超过 65535 个字符的 CLI 命令都可以正常执行了。
EJB
HornetQ
- 900359 - CLONE - 创建 JMS 桥的子系统
- 901137 - 当 reconnect-attempts 设置为 -1时,服务器无法优雅地(gracefully)关闭。
- 901177 - 当消息回滚而 DLQ 不存在时,HornetQ 没有从队列里删除消息。
- 913507 - SpecJMS2007 satellite 驱动里出现 OutOfMemory
- 当连接器上启用了 NIO 时,巨量的线程处于活动状态,这可能导致 OutOfMemory 错误。这是因为 NioWorker 没有正确关闭,所以它们使用的线程和内存都没被释放。现在关于线程处理的底层问题已被纠正,降低了 OutOfMemory 错误的风险。我们推荐启用 "use-nio-global-worker-pool" 参数来最小化 OutOfMemory 错误的风险。下面是一个连接器配置示例:
<netty-connector name="netty" socket-binding="messaging"> <param key="use-nio" value="true"/> <param key="use-nio-global-worker-pool" value="true"/> </netty-connector> - 919446 - 复制的日志 - 在持续的 backup/live 切换后磁盘空间将被用尽。
JSF
- 957838 - 当在 JBoss EAP 6 里序列化 FacesMessage 对象时出现 "java.io.NotActiveException: Fields were never written"。
FacesMessage对象的解序列化在某些情况下将抛出java.io.NotActiveException。这是因为ObjectOutputStream的defaultWriteObject()或writeFields()方法在序列化期间没有按 JSF 规格要求的被调用。这些方法现在在序列化期间都被正确调用,而FacesMessage对象的解序列化也可以正常进行了。- 901266 - viewScoped MBean 上没有调用 @PreDestroy
- JSF
ViewScopedbean 使用的内存在某些情况下不会被回收,导致应用服务器使用的内存逐渐增加(内存溢出)。这是因为在会话过期时,这些 Bean 的@PreDetroy方法没有被调用。JBoss EAP 6 里的 JavaServer Faces 实现已经更新为 Mojarra 2.1.16,它可以解决这个问题。当会话过期时,每个ViewScopedMBean 的@PreDestroy方法都会被正确调用,而且分配给每个 bean 的资源都会被回收。
脚本和命令
- 900518 - Jdr 脚本根本无法连接 localhost:9990
安全性
- 910322 - 无法使用 CLI 添加安全性角色到 security-setting
- 当使用 CLI 或 API 添加
security-role时,要求用户指定它应该具有的角色以及所有不应该有的角色。这是因为这个资源的:add操作没有这些参数的默认只。这些参数现在默认都是false。添加一个角色现在只要求你通过设置它们为true来指定 security-role 必须具有的角色。所有其他角色都默认为false。
Web
- 901061 - EAP 6 Web 子系统里需要类似的 "DeleteWorkDirOnContextDestroy" 配置
- 在重部署时,JBoss EAP 6 没有重新编译 JSP 源码,除非它们比相关的 Java 或类文件更新。JBoss EAP 6 的早期版本没有包含在重新部署时删除 Java 和类文件的代码。这意味着如果用户试图从旧版本的 web 应用程序里恢复源码,
.java和.class文件将不会被删除,从而阻止了 JSP 被重新编译。我们在 JBoss EAP 6 里已经添加了对应的代码,它可以通过系统属性org.jboss.as.web.deployment.DELETE_WORK_DIR_ONCONTEXTDESTROY激活。这个属性的默认值是false。JBoss EAP 6 用户现在可以使用这个属性来删除.java和.class文件以确保 JSP 源码被重新编译。 - 905165 - 方法表达式参数导致了 NPE/MethodNotFoundException
- 如果将 JSF 页面里的 EL 方法的任何参数设置为
null都会导致异常抛出(NullPointerException)。这时因为 JBoss Web EL 解析器无法处理参数为 null 值的情况。我们已经更新了 JBoss Web,现在已可以正常处理参数为 null 的情况。