apache mima 过滤器
来源:互联网 发布:淘宝如何复制宝贝 编辑:程序博客网 时间:2024/05/16 03:25
apache mima 过滤器——IoFilterChain。
主要处理IoSession的事件,
IoSession和IoFilterChain是一对一的关系,一个IoSession生命周期中所有的事件都被IoFilterChian捕获。
IoFilterChain是IoFilter的容器,当某一事件触发,IoFilterChain中的IoFilter会按预定的顺序处理事件,最后可以把IoSession交给IoHander处理。
包:org.apache.mina.core.filterchain
类和接口:
DefaultIoFilterChain过滤器链的一个默认实现 DefaultIoFilterChainBuilder用来建造过滤器链,这是一个默认实现IoFilter过滤器,用来处理IoSession事件IoFilterAdapter过滤器适配器,程序员可继承这个类来定义过滤器,比直接实现IoFilter接口要好IoFilterChain过滤器链接口IoFilterChainBuilder链建造者接口IoFilterEvent过滤事件,封装了Io事件。程序员不会用到这个类,这个类是给mina内部组件用的IoFilterLifeCycleException生命周期异常
总体设计:结构清晰、简单
IoFilterChainBuilder 用一个List<Entity>集合作为链的存储,在这个存储的基础上建造过滤器链IoFilterChain。
IoFilterChain在逻辑上的结构类似于双向链表(head---entity2----...tail),有头有尾有顺序,用entity表示链的节点,每个节点的数据域存放的就是过滤器。
IoFilter接口让程序员能够定义自己的过滤器,以表达对IO的处理逻辑。IoFilterAdapter简化了程序员的工作量。
IoFilter的设计:方便程序员
Io事件爆发,过滤器链发出事件,第一个过滤器就开始自动执行。而接下来第二个过滤器如何执行呢?
IoFilterChain中的过滤器如何运行,apache mina并没有提供一个控制框架,而是把这个工作交给了程序员自己,具体是通过NextFilter来实现。
IoFilter中定义了一个接口NextFilter,并在IoFilterChain.EntryImpl中对NextFilter进行了实现,NextFilter主要的工作就是查找后一个节点,并让过滤链继续调用后面的过滤器执行事件处理逻辑。这样,实际上就把链表中过滤器如何执行的权利交给了程序员。
程序员在自定义过滤器的处理逻辑中,可调用NextFilter继续到下一个过滤器,也可以让程序直接返回,如遇到异常或错误或其他情况。只要是逻辑需要,程序员可以灵活的或多或少的创建过滤器个数,以及处理执行的步骤。
- apache mima 过滤器
- Apache 输入过滤器
- apache 输出过滤器
- Apache Shiro Web应用过滤器
- Apache VFS(3): 文件过滤器和选择器
- Apache 输入过滤器(infilter)修改请求
- apache shiro 自定义过滤器及使用
- 《Apache MINA 2.0 用户指南》第五章:过滤器
- Apache Mina框架自身实现的过滤器
- Apache MINA 2.0 用户指南》第五章:过滤器
- Apache mina2 用户指南(五)过滤器
- Apache mina2 用户指南(十)执行者过滤器
- Apache mina2 用户指南(十二)日志过滤器
- Apache mina2 用户指南(十一)ssl过滤器
- apache模块开发之content hander,读取配置,输出内容替换过滤器,url域名替换过滤器
- paip.输出内容替换在Apache 过滤器filter的设置
- 《Apache MINA 2.0 用户指南》第九章:编解码器过滤器
- 《Apache MINA 2.0 用户指南》第十章:执行者过滤器
- 两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计
- sh cssupdate 优化
- j2EE的简单web开发项目
- 问题一百三十二:自然数对
- NSNotificationCenter 处理自定义消息
- apache mima 过滤器
- 动态创建html内容时所用的W3C DOM属性和方法
- 第十一届北京师范大学程序设计竞赛(网络同步赛)+沙漠之旅
- 使用JS编写一段面向对象的代码
- Windows下搭建MySQL集群
- linux chmod命令参数及用法详解--文件文件权限设定命令
- 关于Memcached Cache是集中式还是分布式的
- URLconf+MTV:Django眼中的MVC----by@心内求法
- 内存管理,stack和heap的区别