无
该接口是继RequestPreHandleProvider接口之后,对请求预处理场景需要的一个补充和完善的接口。提供了与过滤器(javax.servlet.Filter)几乎同等的效果,可以直接在插件代码中使用,不必要配置web.xml。
该接口可以热加载。
package com.fr.decision.fun; import com.fr.stable.fun.mark.Mutable; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 内置的Servlet的过滤器 */ public interface EmbedRequestFilterProvider extends Mutable { String MARK_STRING = "EmbedRequestFilterProvider"; int CURRENT_LEVEL = 2; /** * 初始化过滤器 * 注:该接口生效必须重启服务器 * @param filterConfig 过滤器配置 */ void init(FilterConfig filterConfig); /** * 过滤servlet * @param req http请求 * @param res http响应 */ void filter(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException; /** * 销毁过滤器 */ void destroy(); } |
产品线 | 版本 | 支持情况 | 备注 |
---|---|---|---|
FR | 10.0 | 支持 | |
BI | 5.1 | 支持 | |
BI | 5.1.2 | 支持 | |
BI | 5.1.3 | 支持 |
<extra-decision> <EmbedRequestFilterProvider class="your class name"/> </extra-decision> |
平台服务初始化模块(DecisionServletInitializer)在启动时,会向ServletContext中注入一个filter,同时监听插件的启动和停止,动态缓存所有插件中的EmbedRequestFilterProvider接口实例,在filter执行时依次执行插件中的EmbedRequestFilterProvider接口实例。
该接口仅支持对内置的Servlet做过滤,也就是只能过滤/decision这个路由。
该接口的执行除非异常否则无法终止后续逻辑的执行。也就是只能用于请求头信息的补充、调整、完善等跟响应无关的预处理。不能用于转发、重定向、输出响应内容的场景。
该接口无法指定不同插件间的相同接口的执行顺序,同一插件内的多个实例则按plugin.xml中的申明先后顺序执行。
demo地址:demo-embed-request-filter