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

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

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示: 很明显的是在顺序变化了之后,日志中多了接收到的二进制数据,深入理解Apache Mina (2)---- 与IoFilter相关的几个类(6),这是因为在上面数据已经有解码器将数据还原成了Java对象,所以我们就看不到二进制数据了,至此,关于IoFilter的作用就讲述完了,而在顺序变换后,由于

很明显的是在顺序变化了之后,日志中多了接收到的二进制数据,这是因为在上面数据已经有解码器将数据还原成了Java对象,所以我们就看不到二进制数据了,而在顺序变换后,由于先执行的是打印信息,此时的数据还没有还原成java对象,所以接收到的数据是二进制的。

在上面的例子中我们清楚了整个IoFilter或者是IoFilter的工作流程,那么IoFilter在Mina中的作用如何?所有的数据在发送到Mina程序中时,数据都是先通过IoFilter,经过处理后再转发到业务层。这里IoFilter就起到了一个承上启下的作用。

深入理解Apache Mina (2)---- 与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的作用就讲述完了,希望对你能有所帮助。

上一页  1 2 3 4 5 6 

Tags:深入 理解 Apache

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