java mina是什么,让我们一起了解一下?
MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用,通过Java NIO提供了一个抽象的、事件驱动的、异步的位于各种传输协议之上的API,MINA通常可被称之为NIO框架库。
mina的工作流程是怎样的?
当远程客户机首次访问采用Mina编写的程序时,IOAcceptor作为线程运行,负责接收来自客户的请求。当有客户请求连接时,创建一个IoSession,该IoSession与IoProcessor,SocketChannel与IoService联系起来。
IoProcessor作为另一个线程运行,定时检查客户是否有数据到来,并对客户请求进行处理,一次调用IoService中注册的各个Filter,最后调用IoHandler进行最终的逻辑处理,在将结果过滤后返回给客户端。
mina线程产生:
1、当 IoAcceptor/IoConnector实例创建的时候,同时一个关联在IoAcceptor/IoConnector上的IoProcessor线程池也被创建。
2、当IoAcceptor/IoConnector建立套接字(IoAcceptor 的bind()或者是IoConnector 。的connect()方法被调用)时,从线程池中取出一个线程,监听套接字端口。
3、当 IoAcceptor/IoConnector监听到套接字上有连接请求时,建立IoSession 。对象,从IoProcessor池中取出一个IoProcessor线程执行IO处理。
4、如若过滤器中配置了“threadPool”过滤器,则使用此线程池建立线程执行业务逻辑(IoHandler)处理,否则使用IoProcessor线程处理业务逻辑。
具体代码展示:
public class SocketCodecFactory implements ProtocolCodecFactory { private final SocketDecode decoder; private final SocketEncode encoder; public SocketCodecFactory() { decoder = new SocketDecode(); encoder = new SocketEncode(); } @Override public ProtocolDecoder getDecoder(IoSession session) throws Exception { return decoder; } @Override public ProtocolEncoder getEncoder(IoSession session) throws Exception { return encoder; } }
以上就是小编今天的分享了,希望可以帮助到大家。