深入理解Apache Mina (2)---- 与IoFilter相关的几个类
2009-09-16 00:00:00 来源:WEB开发网很明显的是在顺序变化了之后,日志中多了接收到的二进制数据,这是因为在上面数据已经有解码器将数据还原成了Java对象,所以我们就看不到二进制数据了,而在顺序变换后,由于先执行的是打印信息,此时的数据还没有还原成java对象,所以接收到的数据是二进制的。
在上面的例子中我们清楚了整个IoFilter或者是IoFilter的工作流程,那么IoFilter在Mina中的作用如何?所有的数据在发送到Mina程序中时,数据都是先通过IoFilter,经过处理后再转发到业务层。这里IoFilter就起到了一个承上启下的作用。
到这里我们就可以回答本文开始提到的问题了:
(1)什么时候需要用到IoFilter,如果在自己的应用中不添加过滤器可以吗?
在你自己的程序中可以添加过滤器,也可以不添加,但是在数据发送之前,所发送的数据必须转换成二进制数据,这个可以有IoFilter完成,也可以由 ProtocolCodecFilter完成(关于这个问题会在后面的文章中详细讲述),否则Mina会抛出Write requests must be transformed to class org.apache.mina.common.ByteBuffer: 异常。这是因为网络中传输的数据只能是二进制数据。因此无论添加不添加过滤器,都必须将要发送的数据转换成二进制数据。
(2)如果在IoService中添加多个过滤器可以吗?若可以,如何进行添加,这多个过滤器是如何工作的?
在IoService中可以添加多个过滤器,这个在上面的程序中已经给处理,添加的方式也很简单,通过程序一目了然。
(3)Mina中提供了协议编、解码器,IoFilter也可以实现IO数据的编解码功能,在实际的使用中如何选择?
Mina的编解码器在Mina的使用中是最关键的一个问题,特别是在不同语言之间进行通信的时候,比如Java和C/C++等,由于Mina自身没有提供这些编解码器,所以需要自己来实现。Mina提供了一个Decoder/Encoder,你可以实现两个类来完成不同平之间的通信。关于这个问题会在后面的文档给出具体的实习方法。
至此,关于IoFilter的作用就讲述完了,希望对你能有所帮助。
- ››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的路径
更多精彩
赞助商链接