ITKeyword - 技术文章推荐分享

首页 > dubbo中的Filter顺序

dubbo中的Filter顺序

相关推荐:spring security 标准Filter及其在filter chain的顺序

参考(4.3.6)http://docs.spring.io/spring-security/site/docs/3.2.8.RELEASE/reference/htmlsingle/#ns-web-advanced

最近发现dubbo的小bug,顺便整理了一下dubbo中的Filter调用顺序及如何确定的。服务提供方的过滤器被调用顺序:EchoFilter->ClassLoaderFilter->GenericFilter->ContextFilter->(这4个是在代码中指定的)ExceptionFilter-> TimeoutFilter ->MonitorFilter-> TraceFilter服务消费方的过滤器顺序:ConsumerContextFilter->FutureFilter->MonitorFilter负责加载过滤器的类ProtocolFilterWrapper 这个顺序和SPI配置文件的顺序并不一致。那么是什么决定了Filter的顺序呢?通过查看源代码可以看到,在初始化Filter时,有一个对所有的过滤器排序的过程,其使用的比较类是ActivateComparator。在这个类中,可以看到,是使用Filter中的Activate类进行排序的。而Act

相关推荐:Filter接口的实例调用和配置,在Web.xml配置文件中有顺序的

/** * @author Administrator * 它在Web应用启动时就调用了这个Filter的实例对象 * 下面有对Filter实例调用机制,如果过滤actionr的后缀的地址,要把自定义的过滤器放到Struts的过滤器前端 *<!-- 自定义的过滤器 --> <filter>

<filter-name>my-f

ivate注解中,有一个order的属性,这个属性指定了Filter在chain中的顺序。通过查看EchoFilter的Activate属性,可以看到其order = -110000,而ClassLoaderFilter的order=-30000,因此可以断定,order值越小,其越位于调用端的最顶层。那么当order相同时(都没有设置时),又是根据什么排序的呢?Collections.sort算法从其说明文档可以看出,这个算法是一个稳定的排序算法,如果两个值相同,不会改变其前后顺序。并且从其文档可以看出,其所使用的是一个修改过的归并排序算法。但是Activate的compare方法故意将两个相同的order类弄成了不同,导致排序有些变化。造成了最终上述顺序。所以导致原来配置文件中的位置为:1、monitor 2、trace3、exception4、timeout排序后变成了1、exception2、timeout3、monitor4、trace 文章链接:http://donlianli.com/?p=36

相关推荐:给dubbo接口添加白名单——dubbo Filter的使用

在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如

最近发现dubbo的小bug,顺便整理了一下dubbo中的Filter调用顺序及如何确定的。服务提供方的过滤器被调用顺序:EchoFilter->ClassLoaderFilter->GenericFilter->ContextFilter->(这4个是在代...

------分隔线----------------------------
相关阅读排行