1.Apache Mina是一个高性能的基础网络构架平台,构建在java NIO的基础上
2.Mina使用了SLF4J做为日志记录器,全称Simple Logging Facade for Java,它是一个日志门面,只负责为客户端提供应用接口,实际的日志记录由Log4j/JUL等日志记录器实现。如下图所示:
3.Mina主要有IoConnector,IoAccepter,IoSession,IoSessionConfig,IoHandler,IoFilter,IoFuture,EventListener等对象组成
4.IoConnector实现客户端的连接功能,IoAccepter实现服务端的接收功能,它们都继承自IoService
5.IoSession为客户端和服务端的一个会话,每一个会话都包括会话的建立,打开,注销等功能
6.IoSession中还包括发送或接收到的数据,以及会话上触发相应事件的侦听器
7.而IoSession的相关配置由IoSessionConfig实现
8.IoHandler为数据处理器,在此对象中可以对接收到的数据进行具体的业务处理,也可以决定发送数据成功后是否进行其他的操作。很类似VB当中的事件处理。
9.IoFilter决定着在IoAccepter接收到原始数据之后,IoHandler进行业务处理之前,或反过来的对数据的中间处理过程
10.第一个IoFilter可以实现一个子功能,比如LoggingFilter可以实现对接收或发送数据的进行日志处理,其中LoggingFilter根据加载的具体类库动态判断具体的日志操作
11.在IoFilter中,也可以进行协议或编码解码处理,可以支持byte/txt/http/ftp/xml等各种方法
12.在实际的实现 中,多个过滤器由IoFilterChain进行管理,类似一个管道,原始数据从管道的一端进入,过滤层层过滤处理,最终得到需要的数据,交给IoHandler进行业务处理
13.IoFuture指定IO操作包括connect/read/write等的未来状态
14.EventListener事件侦听器,一般会加载到IoSession上面,进行事件监听。比如对接收数据的事件触发后,会在侦听器中调用IoHandler的MessageReceived()方法来处理。