Mina学习之IoFilter

IoFilter 是MINA中的一个核心结构,扮演了非常重要的角色。IoFilter在IoService和IoHandler过滤了所有的I/O 事件和请求。如果你有做个web项目的经验,则很类似于web中的

filter。为了加快开发效率,Mina提供了很多的filter,例如:

1. LoggingFilter: 记录下所有事件和请求的日志

2. ProtocolCodeFilter:将字节流转换成业务对象。

3. CompressionFilter:压缩所有的数据

4. SSLFilter 

这里,我们将展示如何在一个例子中实现IoFilter, 实现IoFilter接口会很容易,但我们需要知道些Mina内部的细节。

1. Filters alreay present

当前已有很多写好的filters,下图展示了这些已存在的Filter以及一些简单的说明(想查看各个filter更详细的信息,上官网:http://mina.apache.org/mina-project/userguide/ch5-filters/ch5-filters.html)

Overriding Events Selectively

我们可以通过继承IoAdapter 来替代直接实现IoFilter接口,任何收到的事件在一个fiter处理完之后直接交由下一个filter处理。

public class MyFilter extends IoFilterAdapter {
    @Override
    public void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
        // Some logic here...
        nextFilter.sessionOpened(session);
        // Some other logic here...
    }
}


posted @ 2014-04-24 15:36  marco_tan  阅读(418)  评论(0编辑  收藏  举报