3.2. 已知问题
JSF
- BZ#1096905 - EAP 6.2 里切换到 JSF 1.2 时 WeldApplicationFactory 上出现 InstantiationException
- JBoss EAP 6 允许用户通过部署捆绑的描述符选择部署的 JSF 版本。然而,当部署也使用 CDI 时,它目前无法正确地工作。现在,如果两个不同的部署也使用 CDI,它们使用不同的 JSF 版本是不可能的。当进行尝试时,异常将被抛出且部署失败并带有下列错误信息:
java.lang.InstantiationException: org.jboss.as.weld.webtier.jsf.WeldApplicationFactory
虽然JSF 1.2 和 CDI 的一起使用并没有官方支持 ,但是由于 JSF 1.2 是 EE5 的技术,而 CDI 是 EE6 的技术,采用下列变通方法,所有部署仍可能将 JSF 1.2 和 CDI 一起使用:- 在 jboss-cli 里执行下列命令将 JSF 1.2 设置为 EAP 里的默认版本:
/subsystem=jsf/:write-attribute(name=default-jsf-impl-slot,value=1.2)
- 通过修改
/modules/system/layers/base/org/jboss/weld/core/main/module.xml 和 `/modules/system/layers/base/org/jboss/as/weld/main/module.xml
里的<module name="javax.faces.api"/>
行为<module name="javax.faces.api" slot="1.2" />
为 Weld 模块配置 JSF 1.2 依赖关系。 - 重启服务器。
EJB
- BZ#1188420 - EJB Asynchronous pass POJO by reference 在远程调用里导致 ClassCastException 错误
- 在这个版本里,客户通过 Remote 接口对相同 JVM 里的 EJB 的异步 EJB 调用会失败,并抛出 ClassCastException。这是因为请求/响应还没被编码,而客户和 EJB 没有使用相同的类加载器。我们期望在下一个版本里解决这个问题。既然这是一个 Remote 接口调用,请求/响应将被编码,允许客户和 EJB 使用不同的类加载器,这样就不会出现 ClassCastException 了。
- BZ#1020074 - EJB 客户不会试图重新连接任何接收者,直至所有接收者都无法连接。
- 这个版本的 JBoss EAP 6 的 EJB 组件里有一个问题。当连接失败时,EJB 客户应该试图重新连接接收者。而现在并没有尝试直至没有可用的接收者。因此,在负载平衡配置里使用这个方法效率很低。我们仍在调查这个问题。
- BZ#952746 - 修复在调用远程 EJB 资源时事务恢复操作失败的问题
- 在这个版本的 JBoss EAP 6 里,如果调用了可能已经崩溃的远程 EJB 资源,事务恢复操作可能会失败。这是由于服务器和客户间的连接断开了(特别是当客户崩溃且重启),服务器和客户将不会彼此自动通讯。在这种情况下,服务器无法知道客户已经重启,意味着 EJB 的事务恢复过程也无法知道要与哪个 EJB 节点通讯。我们正在调查这个问题并寻求解决方案。
- BZ#1036040 - 用 "REQUIRES_NEW" 事务属性调用 EJB 创建了两个事务。
- 在这个 JBoss EAP 6 版本里,EJB 组件里的一个问题导致事务统计显示错误的已处理事务的数量。这是因为
CMTTxInterceptor
和LifecycleCMTTxInterceptor
拦截器在处理 EJB 请求时创建了两个事务。一个是虚拟事务而另外一个用来管理资源。这导致一个 EJB 请求会被统计两次。这个问题当前还没有变通办法。 - BZ#990102 - 并发访问超时 -- 无法在 5000 毫秒内获取锁
- 这个 JBoss EAP 6 版本带有一个程序错误,当 EJB 客户在 "forwarding" 群集里调用 stateful bean 上的方法时,它可能导致
concurrent access timeout
。这个 bean 将调用转发到 "target" 群集里的 stateful bean,然后再转回来。调用是有序的;客户在获得前一个调用的响应前无法调用新的方法。当群集里的其中一个服务器被关闭时,错误就出现了。
Web
- BZ#1076439 - IBM JDK(1.7 JDK 和 1.8 JDK)上的重载操作期间 NIO2 连接器没有正确地重载
- 如果这个版本的 JBoss EAP 6 在 IBM JDK 1.7 或 1.8 上启动并试图重载服务器,下列错误信息将出现在日志里。
ERROR [org.apache.coyote.http11.Http11NioProtocol] (MSC service thread 1-6) JBWEB003043: Error initializing endpoint: java.net.BindException: Address already in use
这个错误是由于 IBM JDK 里的一个问题引起的,它导致 NIO2 连接器没有正确重载,而原来的连接器继续运行。要绕过这个问题,请使用不同的连接器(注意每个连接器都有自己的功能)或不同的 JDK。我们期望在下一个版本里解决这个问题。 - BZ#918130 - JBossWeb 连接器在应用程序部署完成前启动
- 我们发现 JBossWeb 连接器在启动时有一个时机问题,连接器会在应用程序程序完全部署之前启动并接受请求。在这些情况下,通过负载平衡器或直接连至 JBoss EAP 的客户连接会返回
404
消息。这个问题影响 JBoss EAP 6.0.1 和更高的版本。目前还没有变通方法,我们仍在调查这个问题。 - BZ-1086399 - 根据 JSR-356,WebSockets 应该支持 CDI。
- JBoss EAP 6.4 WebSocket 实现为服务器端点提供了完整的依赖关系注入支持,然而它没有为客户端点提供 CDI 服务。CDI 支持限于 EE6 平台所要求的,因此,EE7 功能如端点拦截器不被支持。
RPM
- Openjdk 软件包在元数据里没有提供 'java'
- 几个 Openjdk 软件包(1.6.0、1.7.0 和 1.8.0)在 RPM 元数据里没有提供 'java',这会影响到 JBoss EAP 频道里可用的需要 Java 的软件包的兼容性。要绕开这个问题,请在安装上述 Openjdk 软件包之前安装其他在 RPM 元数据里提供 'java' 的软件包。请参考:
Web 控制台
- BZ#1180206 - 如果输入错误的值,无法取消对 wsdl-port 和 wsdl-secure-port 的设置
- 如果已经设置了 WSDL 属性端口和安全端口,通过控制台将它们重设为
undefined
是不可能的。这些属性的输入字段目前只允许数字值且不会将空字符串作为undefined
处理变通办法:使用下列管理 CLI 命令之一来取消设置这些属性:/subsystem=webservices:undefine-attribute(name=wsdl-port)
/subsystem=webservices:undefine-attribute(name=wsdl-secure-port)
- BZ#1014048 - RBAC: 在域模式下登出后再登录不会正确清除 UI
- 在某些情况下,当登出 Web 控制台时,在登录另外一个用户前控制台将部分地刷新。这会导致“混合”的屏幕内容,有些区域好像还是旧用户登录,而另外一些区域则是新用户登录的样子。这个问题不是一个安全隐患,不会泄露敏感数据。变通方法是关闭浏览器窗口(不仅仅是活动的标签页)并以新的用户登录。
- BZ#1027586 - RBAC: Web 控制台对应用程序资源的控制过于粗颗粒度
- 在这个 JBoss EAP 6 版本里,当资源被定义为应用程序资源时,控制台可能不会体现这种定义。这是因为控制台经常在一个视图下对几个资源进行分组。如果相关的资源是可写的,视图里的控件就是可用的。然而,如果其中的任何资源被配置为应用程序资源,相关的控件会保持为禁用的。目前的变通方法是,如果可能的话,配置所有和子系统相关联的资源类型为应用程序资源。
JMS
- BZ#1033008 - 通用 JMS 资源适配器和 EE 规格不兼容 - 当在事务上下文里创建会话时,它*没有*忽略参数。
- 这个版本的 JBoss EAP 6 的 JMS 组件里有一个问题。当在事务上下文里创建会话且参数被传递到通用 JMS 资源适配器时,
NullPointerException
将会发生。这是因为尝试处理参数时,Java EE 规格表明它们不会被处理。我们仍在调查这个问题的根本原因,目前的变通方法是像下面这个例子一样设置会话为有事务的。由此,NPE 不会再发生了。connection.createSession(true, Session.SESSION_TRANSACTED);
安全性
- BZ#1103684 - 无法在数据源间分享标识符安全域
- 当定义了同一个安全域支持的多个数据源时,这个版本的 JBoss EAP 6 的一个程序错误会导致
javax.resource.ResourceException: No matching credentials in Subject!
错误。我们正在调查这个问题,期望在以后的版本里解决它。 - BZ#1052644 - LdapExtLoginModule 无法找到自定义的 LDAP 套接字工厂
- 在这个 JBoss EAP 6 版本里,
LdapExtLoginModule
没有设置 TCCL 为(可配置)JBoss 模块的类加载器。这个 JBoss 模块将包含一个自定义套接字工厂。因此,LdapExtLoginModule
无法使用自定义的套接字工厂来创建到 LDAP 服务器的连接。当试图使用自定义套接字工厂和LdapExtLoginModule
时会抛出ClassNotFoundException
。我们将在下一个版本里解决这个问题。 - BZ#1145490 - FIPS 140-2 兼容模式不能在 JDK-8 里无法工作
- 这个版本的 JBoss EAP 6 有下列 JDK8 问题:当在 SSL/TLS 协议里使用 RSA 客户密钥交换时,SunJSSE 供应商无法用在 FIPS 140 兼容模式下。这个问题不会影响到 SunJSSE 的默认模式。
域管理
- BZ#1015524 - RBAC: 无法部署已经被不同 server-group 作用域的用户部署的相同部署
- 当启用了基于角色的访问控制时,带有 server-group 作用域角色的管理用户可能无法部署新的部署,错误信息为:
"JBAS014807: Management resource '[(\"deployment\" => \"example.war\")]' not found"
这是因为域里已存在具有相同名称的部署。这是正常的行为。然而,因为管理用户限定在某个服务器组的作用域里,它们无法查看部署是否已存在于另外一个服务器组上。这使得避免这种错误相当困难。要绕开这个限制,我们推荐给负责添加部署到域里的用户分配无作用域的角色,或者维护一个部署名称列表以避免重复。 - BZ#1021607 - RBAC:两种类型的不可寻址性
- 某些资源对于作用域为服务器组和主机的角色是不可寻址的,目的是提供管理模型的简化视图,从而提高可用性。这和以不可寻址来保护敏感数据的资源是不同的。对于作用域为服务器组的角色来说,这意味着管理模型的
profile
,socket binding group
,deployment
,deployment override
,server group
,server config
和server
部分里的资源将是不可见的,如果它们和为该角色指定的服务器无关的话。对于作用域为主机的角色来说,这意味着管理模型的/host=*
部分里的资源将是不可见的,如果它们和为该角色指定的服务器无关的话。然而,在某些情况下,这种简化的视图可以隐藏超出用户管理的范围的信息,它可以为用户的一系列动作提供指导。一个例子是 BZ# 1015524。在以后的版本里,这些不可寻址的资源可能会改为可寻址但不可读的。这不会影响服务器的安全性,因为出于安全原因它们是不可寻址的。红帽推荐您不要依赖于资源的不可寻址来隐藏信息,除非这种不可寻址性是在敏感性约束里定义的。
群集
- BZ#917635 - 无法加载会话:NullPointerException
- 这是本版本的 JBoss EAP 6 里的一个已知问题,在某些情况下部署应用程序后它会导致 NullPointerException 并遇到 Failed to load session 信息。我们期望在下一个版本里解决这个问题。
- BZ#959951 - CacheException: java.lang.RuntimeException: Failure to marshal argument(s) at server shutdown
- 服务器关闭时下列消息会被记录:
CacheException: java.lang.RuntimeException: Failure to marshal argument(s) at server shutdown
这个信息是因为 Infinispan 还不支持干净关闭,可被安全地忽略。我们正在调查这个问题,但目前还没有变通方法。 - BZ#901162 - TimeoutException: Unable to acquire lock
- 这是本版本的 JBoss EAP 6 里的一个已知问题,它在某些情况下会抛出
TimeoutException: Unable to acquire lock
。我们期望在以后的版本里解决这个问题。 - BZ#900483 - 在 jvm kill 里使用 DIST SYNC 时接收到过时的会话数据
- 在测试过程中,当某个节点关闭且使用了
DIST SYNC
或DIST ASYNC
缓存模式时,某些情况下会接收到过时的会话数据。我们仍在调查这个问题。 - BZ#900946 - IllegalStateException: Cache is in 'TERMINATED'/'STOPPING' state.
- 这个 JBoss EAP 6 版本带有一个程序错误,如果在某个节点上卸载应用程序后 5 秒内又部署到群集里的另一个节点上,这个错误可能会导致抛出
IllegalStateException
。我们正在调查这个问题,希望在下一个版本里解决它。 - BZ#900378 - 带有 SET 复制触发器的 CDI bean 没有复制
- 由于 Weld 组件里的一个程序错误,
setAttribute
方法没有被正确地调用。这导致了带有SET
复制触发器的 CDI bean 复制失败。变通方法是使用SET_AND_NON_PRIMITIVE_GET
触发器。我们将在以后的版本里解决这个问题。 - BZ#922699 - IllegalStateException: AtomicMap stored under key X has been concurrently removed!
- 在偶然的情况下,当过期和钝化的例行处理访问了并删除的会话时 IllegalStateException 会被抛出。这导致异常抛出并登记日志。这个异常可以忽略。然而,禁用会话钝化可以避免这个问题。
事务管理者
- BZ#1039081 - 请从 CLI 删除 "path" and "relative-to" 属性
- 由于 JBoss EAP 6 里没有包含相关的功能,CLI 的事务子系统没有使用
path
和relative-to
属性 。本版本已舍弃这些属性,且在以后的版本将彻底删除。
JDR
- BZ#917683 - Windows 里运行的 JDR 工具生成错误的归档条目名称
- 我们发现在 Windows 环境里使用 JDR 工具时有一个程序错误。它会将原始 $JBOSS_HOME 目录的最后一个字符附加到归档里创建的 JBOSS_HOME 目录上。例如,对于原始 JBOSS_HOME 目录 'jboss-eap-6.2',JDR 工具生成一个名为 'JBOSS_HOME2' 的归档目录。我们正在调查这个错误的原因,目前还没有变通方法。
XML 框架
- BZ#1065128 - 处理大型文本节点时出现性能问题
- 我们在这个版本的 JBoss EAP 6 里发现了一个程序错误,当试图用 Xalan Transformer 转换大型文本节点它会导致性能问题。在使用 Transformer 来转换 StreamSource 为 DOMResult 时,Transformer 的性能会随着字符数据的大小增加而降低。这是一个已知的问题,我们将在以后的版本里解决。
CLI
- BZ#1054874 - jboss-cli.sh 对 cygwin 的支持
- 本版本的 JBoss EAP 6 有一个程序错误,在 Cygwin 环境里使用产品时可能出现问题。POSIX 和 Microsoft Windows 路径实现的不同可能导致 jboss-cli.sh 脚本里的路径变量无法正常解析。我们期望在下一个版本里解决这个问题。
Web Services
- BZ#1079049 - @SchemaValidation 和 wsrm 1.1 一起使用时出现问题
- 如果客户发送引用
CreateSequence
的 WS-RM 1.1 消息到利用 WS-RM 和 schema 检验的端点,应用程序将抛出下列错误:Unmarshalling Error: cvc-elt.1: Cannot find the declaration of element 'CreateSequence'.
org.apache.xerces.impl.xs.XMLSchemaLoader
里的fGrammerPool
里未找到CreateSequence
,因为 CXF 和 JBossWS 还未完全支持 WS-RM 1.1。 - BZ#1074368 - 从 exception 类生成的 Schema 无法识别 @XmlElement 注解
- 我们在这个 JBoss EAP 6 版本里找到一个程序错误,从 exception 类生成的 Schema 无法识别 @XmlElement 注解。我们将在以后的版本里解决这个问题。
mod_cluster
- BZ#900047 - Linux/Unix 上的 SystemMemoryUsageLoadMetric 不正确
SystemMemoryUsageLoadMetric
在 Linux 或 Unix 操作系统上没有显示有用的信息。对于这些系统,HeapMemoryUsageLoadMetric
提供了更多有用的信息。这个问题的解决方案是修改SystemMemoryUsageLoadMetric
的算法,从used
数目里减去buffers/cache
数目。我们仍在研究最佳的实现办法。- BZ#1085427 - StickySessions 无法用于未启用上下文的 ProxyPass
- 本版本 JBoss EAP 6 的一个程序错误阻止了 StickySession 用于未启用上下文的 StickySession。我们期望在下一个版本里解决这个问题。
- BZ#901170 - 带有 mod_cluster 的 Apache 拒绝启动(manager.node)
- 客户报告在启用了 User Account Control (UAC) 的 Windows Server 2008 环境里,
mod_cluster
要求的文件和目录没有被创建。因此,Apache httpd 进程在使用mod_cluster
的 JBoss EAP 6 里无法启动并显示下列错误信息:[Tue Nov 06 07:55:18 2012] [emerg] create_mem_node C:/tmp/jboss-ews-2.0/var/cache/mod_cluster/manager.node failed: Access is denied. Configuration Failed
禁用 UAC 可以阻止这个问题的发生。我们得出的结论是这个问题是因为一个 Windows 管理错误引起的。如果在MemManagerFile
里设置了正确的路径,这个问题只有当错误地配置用户/服务权限时才会发生。这个场景最可能发生在域控制的环境里,此时域管理员必须赋予正确的域权限,这样 UAC 才不会将MemManagerFile
当作安全威胁来对待。我们不会对这个问题采取进一步的行动。
RESTEasy
- BZ#899664 - (EAP 6.4.x) RESTEasy: Boolean 配置参数没有拒绝无效的内容
- 这个版本的 JBoss EAP 6 的一个程序错误允许设置无效的 Boolean 配置参数。这个行为是计划外的,无效的参数应该被拒绝且应用程序也不应该部署。我们期望在下一个版本里解决这个问题。
JCA
- BZ#1184610 - 启动时注册资源适配器时出现竞争条件
- 这个 JBoss EAP 版本在注册资源适配器时包含了一个竞争条件,多个线程可能尝试创建资源适配器子系统。在定义了多个资源适配器时,两个或更多的线程可能试图在内存里创建资源适配器子系统(如在服务器启动时)。只有一个线程可以成功完成这个任务。其他线程将会失败,让一个或多个资源适配器处于未部署的状态。我们期望在下一个版本里解决这个问题。
BZ#1018705: MODCLUSTER000022: Failed to drain n remaining pending requests |
BZ#1097211: 在具有 BC 和无限加密的 Solaris11 和 JDK7 上 JBossWS 测试套件运行失败 |
BZ#1110515: mod_cluster 已连接的计数显示错误的 inflation |
BZ#1125934: 当 enable-welcome-root 被设置为 false 时,对于不存在的上下文,access-log 没有记录 404。 |
BZ#1142804: 使用 REDIRECT binding 的基于 PicketLink SAML 的 SSO:到 SP 的转发是用长度为零的头部信息来发送的。 |
BZ#1146238: 无法用 JAAS 安全管理接口及 --admin-only 登录管理控制台 |
BZ#1147352: Overlay 无法用于展开式部署里的 subunits |
BZ#1157766: 虚拟主机共享到 mod_proxy 配置的指针,导致:对于选项 0 和 2,CreateBalancers 的行为都一样。 |
BZ#1166881: 需要更新 SPFilter 来符合 SP Valve 的功能 |
BZ#1168441: CovalentSNMP/2.3.0, mod_snmp Apache HTTP Server 在 Windows 上没有用示例文件启动 |
BZ#1184956: EAP 6.3 和 EAP 6.4 间会话消耗的区别 |
BZ#1185060: Infinispan JAAS 缓存实现在逐出/删除时没有调用 logout |
BZ#1193459: 关于 CovalentSNMP/2.3.0, mod_snmp Apache HTTP Server 的 error-info\n 消息 |
BZ#901164::在失效切换后 Servlet @Inject-ing SFSB 超时/接收过时的数据/丢失会话 |
BZ#1181036: 运行中的工作节点不应该忽略 HTTPD 端 AdvertiseSecurityKey 的修改 running workers |
BZ#1168921:管理 CLI 的 Kerberos 验证无法用于 IBM JDK |
BZ#1187092:Remoting EJB 的 Kerberos 验证无法用于 IBM JDK |