【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
无
该接口是继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