2. 新功能、增强和技术预览
2.1. 新的功能
- Apache 服务器和连接器
- mod_snmp 和 mod_rt 在 ppc64 现在可用了
从JBoss EAP 6.4 开始,mod_snmp 和 mod_rt 在 ppc64 上的 Red Hat Enterprise Linux 系统里可用了。
- API
- 通过管理 API 启用 Web 容器的全局会话超时设置。
全局 HTTP 会话超时现在可以用管理 API 来进行配置。
对 WebSockets 用例开放公用的 APIWebsockets API 的
javax.websocket
和javax.websocket.server
软件包里的所有类现在都开放为公用的了。 - 验证管理者
- 在 org.jboss.security.AuthenticationManager 接口里添加 logout() 方法
我们在
org.jboss.security.AuthenticationManager
接口里添加了 logout 方法。如果您已经实现了如下例的自定义org.jboss.security.ServerAuthenticationManager
,请注意这一点。<valve> <class-name>org.jboss.as.web.security.jaspi.WebJASPIAuthenticator</class-name> <param> <param-name>serverAuthenticationManagerClass</param-name> <param-value>com.acme.ServerAuthenticationManager</param-value> </param> </valve>
- 群集
- mod_cluster 的 fail_on_status
在 mod_cluster 里添加了对
fail_on_status
的支持。fail_on_status
可以用于指定一个或多个 HTTP 状态码,所以如果群集里的工作节点返回其中一个指定的状态码,它将导致工作节点故障。然后负载平衡器将发送进一步的请求到群集里的另外一个工作节点。 - 域管理
- 支持的嵌套表达式
表达式可以嵌套,这允许使用高级表达式来替代固定值。管理 CLI 在允许表达式的地方都是允许嵌套表达式的。至于普通表达式,解析嵌套表达式的来源是:系统属性、环境变量和 Vault。
通过 Admin API 读取引导错误的能力我们创建了一个新的管理 CLI 命令,它输出发生在引导时的任何错误的细节。这个命令是
read-boot-errors
,它没有参数。基于 HTTP/HTTPS 的管理的 Kerberos 验证现在您可以配置通过 HTTP/HTTPS 进行的管理操作的 Kerberos 验证。这意味着管理控制台现在可以用 Kerberos 验证。
- EE
- 无需 EAR 名称在 jboss-ejb3.xml 里指定资源适配器引用的能力
在
jboss-ejb3.xml
部署描述符里,当部署描述符和资源适配器位于相同的 EAR 里时,您可以为 Message Driven Bean (MDB) 指定资源适配器而无需指定 EAR 名称, - EJB
- 新的 StrictMaxPool 实现
通过修改底层的数据结构消除了 EJB StrictMaxPool 里出现的争夺。
对非群集的 EJB 定时器使用替代的持久化库现在 EJB 定时器的数据可以存储在数据库里并在群集服务器实例间共享。这个方法的优点适用于高可用性环境。
为 jboss-ejb3.xml 里的 <ejb-name> 启用通配符为 jboss-ejb3.xml 里的 <ejb-name> 启用对通配符(*)的支持。
- Hibernate
- 为 MySQL 5.7 添加新的 Hibernate 方言
为了支持 MySQL 5.7,我们添加了新的 Hibernate 方言。要防止日期和时间里小数位的四舍五入,对方言现在有下列限制:对 "timestamp" 字段,Hibernate 假定
datetime(6)
,而对于 "time",Hibernate 假定time(0)
。 - HornetQ
- 关闭目的地上所有消费者和这些消费者的连接的能力
我们添加了关闭目的地上所有消费者和这些消费者的连接的能力。这个命令可以通过管理 CLI、管理 API 和 JMX 来使用。
中止慢速的 HornetQ 消费者现在系统可以自动监控消息消费者的速度,如果其速度没有达到指定的标准会采取行动。最小的消费速度以消息每秒指定,如果没有达到,消费者连接被终止或由应用程序发出管理通知。默认情况下这个功能是禁用的。
按照 JMS 用户终止连接的能力HornetQ 现在支持以 JMS 用户为标准来终止连接。之前只能按照客户 ID 或 IP 地址来终止连接。
- Hibernate Search
- 将 Hibernate Search 设置为默认模块
Hibernate Search 现在是 JBoss EAP 的标准组件了。
- 安装程序
- 在安装程序里测试数据源和 LDAP 连接
当通过图形界面或控制台模式安装 JBoss EAP 时,在安装过程中安装程序现在会提供检测 LDAP 和数据源连接性的选项。这确保了安装过程中提供的参数是有效的。
- JBoss Web
- 从 JBoss Module 里的 JAR 加载 taglibs
Tag Library Descriptors (TLDs) 可以从各自的应用程序分离出来,让添加和更新更为容易。要使用这个功能,请创建一个包含 TLD JAR 的自定义 JBoss EAP 6 模块,然后在应用程序里声明对该模块的依赖关系。
配置 Http-Only SSO cookies 的能力我们在虚拟服务器的 SSO 配置里添加了一个新的属性:
http-only
。当将其设置为true
时,这个属性添加HttpOnly
到 Cookie 头部,指示浏览器应该限制来自非 HTTP API 的访问。用户应该意识到支持这个限制的选项取决于客户(Web 浏览器)。通过限制非 HTTP API(如 JavaScript)的访问,这个动作可能减轻安全漏洞的风险。 - JCA
- 启用对 "datasource_class" 系统属性的支持
在默认情况下,当数据库驱动 JAR 包含了一个
services/javax.sql.Driver
文件时,数据源定义里的datasource_class 属性将被忽略而使用 JAR 里的 Driver 类。要覆盖这种默认的行为并使用 datasource_class 属性,请设置属性-Dironjacamar.jdbc.prefer_datasource_class=true
。检测到 JCA 1.7 资源适配器并抛出部署异常如果检测到 JCA 1.7 资源适配器会抛出异常,因为它属于基于 EE7 的平台。
添加 Leak detector 池IronJacamar 现在推出了一个连接池实现,它监控连接并在应用程序永不释放时提供反馈。当这个池被关闭或冲刷时,系统日志里将记录跟踪栈信息。要启用这个连接池,请将系统属性
ironjacamar.mcp
设置为org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
。要将跟踪栈信息输出到单独的文件里,请将系统属性ironjacamar.leaklog
设置为相应的文件名及路径。-Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
-Dironjacamar.leaklog=leaks.txt
- JMS 操作
- 为 JMS 资源添加 remove-jndi 操作
现在 JMS 资源里启用了
remove-jndi
操作。 - JMX
- 为 EAP 6 里的 facade MBean 启用 JMX MBean 注册和取消注册的通知。
jboss.as
和jboss.as.expr
域里的 MBean 不是真正的 MBean 而是 facade。因此,MBean 的注册和取消注册事件是不可用的。现在我们启用了这些域的注册和取消注册事件,并允许监控这些事件。 - 日志
- 为基于大小的文件轮换添加后缀支持
我们为基于大小的文件轮换添加了对时间戳的支持,在日志文件轮换时它附加到每个日志文件。时间戳的格式可根据需要进行配置。之前它只能有数字后缀,在某些情况下查找相关的日志文件会比较困难。
在 JBoss Logging 里实现 java.util.logging.LogManager.getLoggerNames()getLoggerNames() 方法已被添加至 java.util.logging.LogManager,它返回所有 logger 的名称。
审计 syslog handler 应该能够自动重连审计 syslog handler 添加了新的属性
reconnect-timeout
,它指定重连 syslog 服务器的间隔。使 PeriodicSizeRotatingFileHandler 可以直接通过 CLI/Web 控制台来配置PeriodicSizeRotatingFileHandler
现在可以通过管理控制台或 CLI 来配置。之前这样的处理程序只能使用自定义处理程序来配置。新的配置方法更容易使用且不容易出错。为系统属性的 "password" 设置掩码任何包含文本
password
(不区分大小写)的系统属性在通过 logger 输出时将用redacted
进行替换。这避免了在日志文件里出现明文密码,从而提高了安全性。 - 管理 CLI
- CLI 应该支持元素名的属性替换,而不仅仅是参数。
我们添加元素名称的属性替换。之前管理 CLI 只支持参数的属性替换。
添加 echo 命令以用于 CLI 脚本我们添加了一个新的
echo
管理 CLI 命令。它逐字输出命令后的任何文本。 - 管理控制台
- 在图形化控制台里显示服务器日志
您现在可以在 JBoss EAP 管理控制台里查看服务器和应用程序日志以帮助诊断错误、性能和其他问题。对于在管理控制台的日志查看器里可查看的日志,它必须位于服务器的
jboss.server.log.dir
目录。日志查看器也承认用户的 RBAC 角色分配,所有登录到管理控制台的用户只能查看被授权访问的日志。访问 Red Hat 插件现在您可以在管理控制台里访问常用的 Red Hat 客户门户功能。管理控制台顶部的导航条包含一个下拉菜单:Red Hat Access。点击这个菜单会显示三个任务专有的到客户门户的链接:
、 和 。在控制台里开放 Web 容器的全局会话超时设置全局 HTTP 会话超时现在可以用管理控制台来进行配置。
- Naming
- 对于远程 TIBCO EMS 查找使用外部上下文
当使用普通的 JMS 资源适配器来连接外部消息服务器时,您可以使用外部上下文而不是编写自定义 ObjectFactory。下面是一个使用
<external-context>
的示例摘录。请用适合您的 JMS 供应商的属性替换下面例子里的属性。<external-context name="java:global/tibco" module="com.tibco.tibjms" class="javax.naming.InitialContext"> <environment> <property name="java.naming.factory.initial" value="com.tibco.tibjms.naming.TibjmsInitialContextFactory"/> <property name="java.naming.provider.url" value="TIBCO_EMS_SERVER_HOST_NAME:PORT"/> <property name="java.naming.factory.url.pkgs" value="com.tibco.tibjms.naming"/> <property name="org.jboss.as.naming.lookup.by.string" value="true"/> </environment> </external-context>
- 补丁
- 改进了对补丁细节的访问
管理 CLI 命令
patch
有两个额外的参数:inspect
和info
。info
参数输出 installed 补丁的信息,而inspect
参数则输出 downloaded 补丁的信息。改进了管理控制台的 Patch Management 面板,包含每个补丁的简短描述以及到更详细内容的链接。 - 性能
- 从 1.2 版本里删除向后移植 AbstractPool initLock() 同步
当调用从池里获得连接后注册事务时会创建一个锁。既然事务注册表已经处理了锁且使用并行连接,额外的锁处理是没有必要的,所以会被删除。
新的受管连接池在 JCA 子系统里创建了新的受管连接池,提高性能并消除服务器里的线程竞争。
- PicketLink
- 集成 PicketLink 子系统到 EAP 控制台的插件
PicketLink 子系统现在可以通过 JBoss EAP 管理控制台来配置,更易于管理。
修改 PicketLink IDP 以支持 SAML 2.0 自发响应增强了 PicketLink Identity Provider (IDP),它现在可以发送 SAML 2.0 自发响应到服务提供者。
PicketLink 应该是可配置的以忽略 ajax 调用当用户没有验证并使用 AJAX 发送请求到 IdP 和 SP 时,PicketLink 将用 403 HTTP 状态码而不是登录页面来响应。用
XMLHttpRequest
值检查X-Requested-With
头部的存在可以确认 AJAX 请求。 - RESTEasy
- 使用 JBossLogging 的 RESTEasy 日志
RESTEasy 的日志功能现在是由 JBossLogging 处理的。这样做的好处包括对日志消息国际化的支持。
新的安全性参数RESTEasy 有两个新的参数来增强处理
org.w3c.dom.Document
的安全性。两者都是context-param
参数且都可以在应用程序的web.xml
里进行设置。resteasy.document.secure.processing.feature
强制实施了在处理org.w3c.dom.Document
文档和 JAXB 对象表示形式时的安全约束。The parameterresteasy.document.secure.disableDTDs
禁止在org.w3c.dom.Document
和JAXB 对象表示形式里使用 DTD。resteasy.document.secure.processing.feature
和resteasy.document.secure.disableDTDs
的默认值是true
。要都禁用或禁用其只一个,请在应用程序的web.xml
文件里添加下列内容:<context-param> <param-name>resteasy.document.secure.processing.feature</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>resteasy.document.secure.disableDTDs</param-name> <param-value>false</param-value> </context-param>
- RPM 安装和更新
- 现在可以选择 RPM 频道或资料库来订阅 JBoss EAP 的 RPM 安装和更新。目前的 JBoss EAP 频道提供了最新的版本,而次要频道则提供专门的次要版本及所有的补丁。这允许您保持着相同的次要版本,而仍可以使用重要的安全补丁。关于可用频道的详情,请参考 https://access.redhat.com/solutions/1346093。
- 安全性
- SSLValve 允许用户配置的头部名称
以前 SSLValve 用来传递来自发起者的 SSL/TLS 信息的 HTTP 头部的名称是预定义的,如:ssl_client_cert、ssl_cipher、ssl_session_id 和 ssl_cipher_usekeysize。进行修改后,头部名称现在是可以定制的,发起者可以使用 SSLValve 配置里指定的任意的 HTTP 头部名称。
Remoting 的基于 Kerberos 的验证现在启用了对 EJB 和 EJB 客户的 Kerberos 验证。
管理安全区应该缓存 LDAP 数据管理安全区现在缓存 LDAP 数据,这有助于减少 LDAP 请求的次数。
对 Oracle JVM 上的 Oracle DB 的静态 Kerberos 凭证的授权添加了在 Oracle JVM 上的 Oracle DB 数据源里使用静态 Kerberos 凭证的授权。请注意这要求 Oracle DB 驱动 11.2.0.3 或更新的版本,而且必须启用安全区缓冲。
对 Oracle JVM 上的 SQLServer 的静态 Kerberos 凭证的授权添加了在 Microsoft SQL Server 数据源里使用静态 Kerberos 凭证的授权。请注意只有 Non-XA 连接支持这个功能。
在 PicketBoxVault 实现里添加对密钥库外部密码的支持Vault 功能现在支持通过外部命令或自定义提供的密钥库密码。
在 Vault 工具里添加 "remove vault entry" 选项我们改进了 Vault CLI 工具,添加了删除 Valut 里保存的 Vault 的功能。
在 Java 安全管理者的配置里使用 -secmgr 标记在启动脚本里添加
-secmgr
参数或启用配置文件里的SECMGR="true"
选项可以让 JBoss EAP 在 Java 安全管理者里运行。现在不可以再用-Djava.security.manager
Java 系统属性来启用 Java 安全管理者,因此自定义安全管理者不能再使用了。启用自定义安全管理者来启动 JBoss EAP 将导致非零的退出代码。关于启用 Java 安全管理者所需的修改,请参考《安全指南》。 - 支持的配置
- Oracle JDK 8
Oracle Java Platform, Standard Edition 1.8 (JDK 8) 已被添加到被支持的配置列表里。
IBM JDK 8IBM JDK 8 已被添加到被支持的配置列表里。
DBMS下列的 DBMS 已通过认证且被完全支持:
- Enterprise DB Postgres Plus Advanced Server 9.3
- MySQL 5.7
- IBM DB2 10.5
- Microsoft SQL Server 2014
- PostgreSql 9.3
为 PPC 上的 RHEL 测试版本提供 mod_snmp运行 Red Hat 企业版 Linux 6 和 Red Hat 企业版 Linux 7 的 PowerPC64 架构现在支持简单网络管理协议(Simple Network Management Protocol,SNMP)模块
mod_snmp
了。 - WebSockets 1.0
- WebSocket 1.0 协议提供 Web 客户端和服务器间的两种通讯方式。客户端和服务器间的通讯是基于事件的,和轮询方法相比,它有更快的处理速度和更小的带宽。JBoss EAP 6.4 WebSocket 实现为服务器端点提供了完整的依赖关系注入支持,然而它没有为客户端点提供 CDI 服务。CDI 服务限于 EE6 平台要求的内容,因此,EE7 功能如端点拦截器不被支持。