深入理解Apache Mina (2)---- 与IoFilter相关的几个类
2009-09-16 00:00:00 来源:WEB开发网从名字上看知道IoFilter应该是一个过滤器,不错,它确实是一个过滤器,它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。在Mina的官方文档中已经提到了IoFilter的作用:
(1)记录事件的日志(这个在本文中关于LoggingFilter的讲述中会提到)
(2)测量系统性能
(3)信息验证
(4)过载控制
(5)信息的转换 (例如:编码和解码,这个会在关于ProtocolCodecFilter的讲述中会提到)
(6)和其他更多的信息
还是上一篇文档一样,先提出几个问题,然后沿着这几个问题的思路一个一个的对IoFilter进行讲解。
(1)什么时候需要用到IoFilter,如果在自己的应用中不添加过滤器可以吗?
(2)如果在IoService中添加多个过滤器可以吗?若可以,如何进行添加,这多个过滤
器是如何工作的?
(3)Mina中提供了协议编、解码器,IoFilter也可以实现IO数据的编解码功能,在实际
的使用中如何选择?
在开始对上面的问题进行讨论前,为了对IoFilter提供的方法有一个具体的了解,先对Mina自身提供的一个最简单的过滤器进行一些讲解----LoggingFilter(源码在附件中,配有中文翻译)。
首先还是看一下LoggingFilter中提供的几个方法。列举如下(方法中的参数就不再给出,完整方法的实现请参考附件中LoggingFilter的源码):
(1)sessionCreated()
(2)sessionOpened()
(3)sessionClosed()
(4)sessionIdle()
(5)exceptionCaught()
(6)messageReceived()
(7)messageSent()
(8)filterWrite()
(9)filterClose()
这几个方法都由相应会话(或者说是连接的状态,读、写、空闲、连接的开闭等)的状态的改变来触发的。当一个会话开启时,LoggingFilter捕获到会话开启的事件,会触发sessionCreated()方法,记录该会话开启的日志信息。同样当一个会话发送数据时,Logging捕获到会话发送消息的事件会记录消息发送的日志信息。这里只是给出messageReceived()的完成方法的实现,其他方法的完整实现请参考附件中 LoggingFilter的源码。
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››apache rewrite将指定URL转向指定的几个服务器
- ››apache配置文件httpd.comf部分参数说明
- ››Apache+Mysql+PHP+phpMyAdmin+Mac OS X 10.7 Lion...
- ››深入理解JAR包
- ››apache+tomcat负载均衡_项目实例
- ››apache mysql php 源码编译使用
- ››深入分析Volatile的实现原理
- ››深入理解Flash Player的应用程序域(Application ...
- ››深入理解flash函数(AS2)
- ››Apache添加mod_aspdotnet.so支持ASP.NET配置指南
- ››Apache中改变php.ini的路径
更多精彩
赞助商链接