MINA试用

来源:互联网 发布:hdmi数字矩阵切换器 编辑:程序博客网 时间:2024/04/30 19:37

简述:

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()));

这是个过滤器,直接的说就是个转化器,在这里就是把一个object对象装换方法给定义了,所以Person要implements Serializable, 之后到服务器在把这个序列化的对象转换为在业务层认识的Person对象,如果是buffer流来处理其实是一样的道理,不过就是要自己定义一个ProtocolCodecFactory来处理协议的,注意的都是client和server端要统一就是了


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