ITKeyword,专注技术干货聚合推荐

注册 | 登录

dubbo中的Filter顺序

donlianli 2015-05-21

相关推荐:filter执行顺序

多个筛选器的运行顺序取决于下列规则:  将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中。  将 

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

相关推荐:web.xml 中的listener、 filter、servlet 加载顺序及其详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己 也就不重复

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

相关推荐:servlet和filter中的url-pattern匹配顺序

转载:http://blog.sina.com.cn/s/blog_40e2140e01000bad.html 今天遇到一个问题,上网查了servlet的规范才发现,servlet和filter中的url-pattern还是有一些文章

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

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。