简述:
Apache MINA是一款网络应用框架,帮助用户开发高性能和高可靠性的网络应用,他提供事件驱动,异步调用的API以及通过JAVA NIO实现的TCP/IP 和UDP/IP
官网:http://mina.apache.org/mina-project/index.html
其中,Java NIO: JAVA New IO的简写,特性包括:
1)为所有原始类型提供缓存支持;
2)字符解码编码解决方案;
3)Channel:一个新的原始I/O对象
4)支持锁和内存映射的文件访问接口
5)提供多路(non-blocking)非阻塞式的高伸缩性网络I/O
(引自: http://www.iteye.com/topic/834447)
我的理解 :
1) NioSocketAcceptor 是MINA的适配器。MINA中有过滤器和处理器的概念,处理模型:
request -> 过滤器A -> 过滤器B-> 处理器-> 过滤器B -> 过滤器A
由于之前对于Java Nio的认识几乎为零,这里的谈论出现的错误还望指正,
MINA实现的框架 直接来说就是在socket上通信,那么通信的话协议是很关键的,那么究竟选用什么协议呢?
MINA中需要继承并且实现一个ProtocolCodecFactory的类,这个类里需要定义ProtocolDecoder和ProtocolEncoder用来对传输的东西, 或是字节流 、或是序列化的对象进行解码与转码, 举个例子,从客户端要发一个person类的信息给服务器,那么首先要统一client端和server端的通信协议,比如大家都用序列化的对象,那么我们两者的ProtocolCodecFactory都定义成
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
MINA项目Maven的dependency
<dependencies> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> </dependencies>
附件是
网上前辈博客中的资源,斗胆将他转成了实际的技术原型(引自: http://www.blogjava.net/hoojo/archive/2012/08/01/384490.html)
资源页面:
http://download.csdn.net/detail/anialy/5018971