4.5.5. 迁移 Global Valves
JBoss EAP 支持的早期版本.valves 是插入到应用的请求处理管道中的自定义类,在 servlet 过滤器之前插入,以更改请求或执行其他处理。
- 全局 valves 会被插入到所有部署的应用的请求处理管道中,并在服务器配置文件中配置。
- 身份验证器 valves 验证请求的凭据。
-
通过扩展
org.apache.catalina.valves.ValveBase
类并配置在jboss-web.xml
描述符文件的<valve> 元素
中创建自定义应用程序 valves。这些 valve 必须手动迁移。
本节论述了如何迁移全局 valves。本指南的"迁移自定义应用程序 Valves"一节介绍了自定义和验证器的迁移。
Undertow(在 JBoss EAP 7 中取代 JBoss Web)不支持全局 valves;但是,您应该能够通过使用 Undertow 处理程序来实现类似的功能。Undertow 包含多个提供常见功能的内置处理程序:它还提供创建自定义处理程序的功能,可用于取代自定义 valve 功能。
如果您的应用使用 valves,则必须将它们替换为适当的 Undertow 处理程序代码,以便在迁移到 JBoss EAP 7 时获得相同的功能。
如需有关如何配置处理程序的更多信息,请参阅 JBoss EAP 7 配置指南中的配置处理程序 。
如需有关如何配置过滤器的更多信息,请参阅 JBoss EAP 7 配置指南中的配置过滤器 。
迁移 JBoss Web Valves
下表列出了 JBoss EAP 之前版本中 JBoss Web 提供的 valves,以及对应的 Undertow 内置处理程序:JBoss Web valves 位于 org.apache.catalina.valves 包中
。
valve | 处理程序 |
---|---|
AccessLogValve | io.undertow.server.handlers.accesslog.AccessLogHandler |
CrawlerSessionManagerValve | io.undertow.servlet.handlers.CrawlerSessionManagerHandler |
ExtendedAccessLogValve | io.undertow.server.handlers.accesslog.AccessLogHandler |
JDBCAccessLogValve |
相关说明请查看 下面的 |
RemoteAddrValve | io.undertow.server.handlers.IPAddressAccessControlHandler |
RemoteHostValve | io.undertow.server.handlers.AccessControlListHandler |
RemoteIpValve | io.undertow.server.handlers.ProxyPeerAddressHandler |
RequestDumperValve | io.undertow.server.handlers.RequestDumpingHandler |
RewriteValve | |
StuckThreadDetectionValve | io.undertow.server.handlers.StuckThreadDetectionHandler |
您可以使用管理 CLI 迁移
操作自动迁移满足以下条件的全局 valves:
- 它们仅限于上表中列出的 valve,不需要手动处理。
-
它们必须在服务器配置文件的
Web
子系统中定义。
如需有关管理 CLI 迁移
操作的更多信息,请参阅 管理 CLI 迁移操作。
JDBCAccessLogValve Manual Migration Procedure
org.apache.catalina.valves.JDBCAccessLogValve
valve 是规则的例外,无法自动迁移到 io.undertow.server.handlers.JDBCLogHandler
。按照以下步骤迁移以下示例 valve。
- 为数据库创建一个驱动程序模块,它将存储日志条目。
配置数据库的数据源,并将驱动程序添加到
datasources
子系统中可用驱动程序的列表中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
undertow
子系统中,使用以下表达式配置expression-filter
:jdbc-access-log(datasource=DATASOURCE_JNDI_NAME)。
<filters> <expression-filter name="jdbc-access" expression="jdbc-access-log(datasource='java:jboss/datasources/accessLogDS')" /> ... </filters>
<filters> <expression-filter name="jdbc-access" expression="jdbc-access-log(datasource='java:jboss/datasources/accessLogDS')" /> ... </filters>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow