Apache Mina的IoService接口学习笔记

来源:互联网 发布:ug五轴编程工资多少钱 编辑:程序博客网 时间:2024/05/21 23:51

IoService接口的作用

IoService接口能做好多事情,比如创建客户端服务,创建服务端服务,session的管理,过滤器链的管理,监听网络的连接等等等等,为了区分服务端和客户端服务,所以IoService下面有两个接口分别对应服务端服务和客户端服务
1.IoAcceptor接口,下面是这个接口跟IoService之间的关系
这里写图片描述
IoAcceptor继承了IoService接口,并添加了IoAcceptor特有的bind()方法,用来启动监听一个端口。
2.IoConnector接口,下面是跟IoService之间的关系
IoConnector接口同样继承了IoService接口,并添加了客户端特有的接口属性及方法,比如connect()方法,成为典型的客户端接口,用来连接一个服务端端口。
3.AbstractIoService实现了IoService中管理服务的方法,比如getFilterChainBuilder方法—获得过滤器链;
—-为什么有了IoService接口还要定义AbstractIoService抽象类?一样为了代码的复用!AbstractIoService抽象类实现了服务端或客户端的共有的管理服务的方法,不需要让IoService接口的子类重复的实现这些方法;AbstractIoService抽象类继承了AbstractIoService抽象类并实现了IoAcceptor接口,成为了拥有管理服务端实现功能的服务端类;我们常用的NioSocketAcceptor就是它的子类;
AbstractIoConnector抽象类继承了AbstractIoService抽象类并实现了IoConnector接口,成为了拥有管理客户端实现功能的客户端类;我们常用的NioSocketConnector就是它的子类;

IoService接口的主要方法

TransportMetadata getTransportMetadata()
这个方法获取传输方式的元数据描述信息,也就是底层到底基于什么的实现,譬如:nio、apr 等。

void addListener(IoServiceListener listener)
这个方法可以为IoService 增加一个监听器,用于监听IoService 的创建、活动、失效、空闲、销毁,具体可以参考IoServiceListener 接口中的方法,这为你参与IoService 的生命周期提供了机会。

void removeListener(IoServiceListener listener)
这个方法用于移除addListener的方法添加的监听器。

boolean isDisposing()
返回 isDisposed() 的状态,当且仅当 isDisposed() 方法被调用完毕才返回TRUE

boolean isDisposed()
返回service的状态,当且仅当service 的当前进程的所有资源已经释放完毕才返回 TRUE

void dispose()
这个方法用于释放service分配的资源,他可能要花费一些时间,用户应该调用 isDisposing() 和 isDisposed() 判断资源是否释放完成,当一个service被关闭的时候都应该调用该方法来进行资源释放

IoHandler getHandler()
返回当前进程serbice关联的handler

void setHandler(IoHandler handler)
这个方法用于向IoService 注册IoHandler,同时有getHandler()方法获取Handler

Map

IoAcceptor接口的主要实现类

NioSocketAcceptor : 非阻塞的server端的Socket(基于TCP协议)

NioDatagramAcceptor: 非阻塞的server端的Socket (基于UDP协议)

AprScoketAcceptor : 基于APR阻塞式的socket

VmPipeScoketAcceptor :基于管道的Socket

IoConnector接口的主要实现类

NioScoketConnector : 非阻塞的client端的Socket
NioDatagramConnector: 基于UDP协议 非阻塞的client端的Socket
AprScoketConnector :基于Apr的scoket
ProxyConnector :提供代理的scoket
SerialScoket : 提供多个端口连接的scoket
VmPipeConnector:基于管道的socket

0 1
原创粉丝点击