WEB开发网
开发学院软件开发Java 深入理解Apache Mina (2)---- 与IoFilter相... 阅读

深入理解Apache Mina (2)---- 与IoFilter相关的几个类

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示:从名字上看知道IoFilter应该是一个过滤器,不错,深入理解Apache Mina (2)---- 与IoFilter相关的几个类,它确实是一个过滤器,它和Servlet中的过滤器类似,Logging捕获到会话发送消息的事件会记录消息发送的日志信息,这里只是给出messageReceived()的完成方法的实现,主要

从名字上看知道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的源码。

1 2 3 4 5 6  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接