最近在学习NIO的技术,因此了解了一下Apache MINA,阅读了它的一部分代码,将自己的理解记录下来。
我用的是MINA版本是2.0.0 RC1,下载地址是http://mina.apache.org/
。据官方文档的介绍,2.0版本相比1.x版本有较大的变化,比如包结构、类名等等。
我是通过一个简单的服务程序的例子进行跟踪调试来分析它的源代码的,主要的理解有以下几点:
- MINA是基于事件驱动的,在应用层是先使用Filter对接收到的数据进行过滤,然后使用Handler进行业务上的处理。
- 各部分之间是通过NioSession来进行数据的共享、传递,一个Session对应于一个SocketChannel。
- 底层的网络功能是由NioAcceptor、NioProcesser来处理的。其中,NioAcceptor主要是进行ServerSocketChannel的绑定、OP_ACCEPT事件的注册监听;NioProcesser是负责Read、Write的事件注册监听、数据读写等。默认情况下,一个程序有一个Accetor,每个Acceptor有一个Selector(只负责OP_ACCEPT事件)、一个线程池(默认是用ExecutorService.newCachedThreadPool()创建的,里面实际上只运行了一个Acceptor线程);默认情况下,NioProcessor的个数等于机器的CPU个数加1,每个NioProcessor有一个Selector(负责OP_READ、OP_WTITE),每个NioProcessor可以处理多个NioSession(也就是说这些Session对应的Channel都在这个NioProcessor的Selector里注册),各个NioProcessor共用一个线程池(里面实际运行的线程数等于NioProcessor的个数,也就是一个NioProcessor对应一个Processor线程)。
- 当NioSession被add到一个NioProcessor之后,OP_READ事件马上就被注册了,然后Selector会被wake以处理新增加的NioSession;但是OP_WRITE事件要等到有数据要写得时候才会注册(据我的观察是这样,而且它会在数据已经发出之后再注册一遍,等到下一次没数据可写得时候再取消OP_WRITE)。
参考资料:http://www.ibm.com/developerworks/cn/java/j-lo-mina2/
分享到:
相关推荐
在本学习笔记中,我们将专注于MINA的子项目——FtpServer,它是实现FTP服务器功能的一个模块。 FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在不同主机之间传输文件。Apache MINA FtpServer提供...
Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)
在这个"Apache MINA2学习笔记DEMO"中,我们很可能会看到如何使用MINA来创建一个自定义协议的示例。自定义协议通常是为了满足特定应用的需求,例如高效的数据传输、安全性或者特定的编码格式。MINA允许开发者定义自己...
Apache Mina是一个基于Java的网络通信框架,专为高性能、高可用性和可扩展性而设计。...在深入学习Mina的过程中,理解IoService及其子类的工作原理,以及如何结合IoHandler实现业务逻辑,对于掌握Mina框架至关重要。
最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 引言 1 一. Mina入门 2 第一步.下载使用的Jar包 2 第二步.工程创建配置 2 第三步.服务端程序 3 第四步.客户端程序 6 第五步.长...
Apache Mina是一个高性能、事件驱动的网络应用框架,主要用于简化开发服务器端的复杂性,尤其在处理TCP/IP、UDP和SSL/TLS等协议时。它提供了丰富的API和工具,使得开发者能够快速构建网络应用程序,如FTP、SMTP、...
1. **下载使用的Jar包**:在开始Mina2.0的学习之前,你需要从Apache官网或其他可靠的源下载Mina的最新版本库。通常,这包括核心库和其他依赖库,如slf4j用于日志记录。 2. **工程创建配置**:创建一个新的Java项目...
在MINA的学习笔记中,记录的所有API通常会包括以下几个核心部分: 1. **IoSession**: 这是MINA的核心接口,代表了客户端和服务器之间的连接。IoSession提供了读写数据、管理连接状态、获取会话属性等功能。例如,`...
Apache Mina是一个强大的开源网络应用框架,主要设计用于构建高性能、高可扩展性的网络应用程序。Mina通过提供一个抽象的、事件驱动的异步API,简化了基于Java NIO(Non-blocking Input/Output)的复杂编程,使得...
Apache Mina是一个强大的开源框架,专门用于构建高性能、高可扩展性的网络应用程序。Mina2.0是其一个重要的版本,提供了许多改进和新特性,使得开发者能够更轻松地处理网络通信任务,尤其是在Java NIO(Non-blocking...
**Mina 学习笔记(入门)** Apache Mina 是一个高度可扩展的网络通信框架,主要用于构建高性能、高效率的服务器端应用。它提供了一种简单的方式来处理网络协议,如TCP/IP和UDP/IP,以及SSL/TLS加密的连接。在本学习...
《mina学习笔记》 Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,尤其是TCP和UDP协议的应用。MINA 提供了一种与网络协议无关的API,...
通过学习和理解Mina的基本概念和使用方法,我们可以构建高效、稳定、可扩展的网络应用。无论是简单的数据传输还是复杂的协议处理,Mina都能提供强有力的支持。在实际项目中,可以根据需求选择合适的连接模式,利用...
MINA-2.0.0-M4.chm(英文)中文的实在是没有)+Mina2.0学习笔记(修订版).doc+Apache_Mina_Server_2.0中文参考手册V1.0.pdf+MINA框架新人指南.pdf