底层架构-远程通讯-Mina

底层架构-远程通讯-Mina

ID:38804389

大小:19.97 KB

页数:4页

时间:2019-06-19

底层架构-远程通讯-Mina_第1页
底层架构-远程通讯-Mina_第2页
底层架构-远程通讯-Mina_第3页
底层架构-远程通讯-Mina_第4页
资源描述:

《底层架构-远程通讯-Mina》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、底层架构-远程通讯-Mina一:Mina概要   ApacheMina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Javanio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。如下的特性:1、 基于Javanio的TCP/IP和UDP/IP实现基于RXTX的串口通信(RS232)VM通道通信2、通过filter接口实现扩展,类似于Servletfilters3、low-level(底层)和high-level(高级封装)的api:      low-level:使用ByteB

2、uffers      High-level:使用自定义的消息对象和解码器4、Highlycustomizable(易用的)线程模式(MINA2.0已经禁用线程模型了):      单线程      线程池      多个线程池5、基于java5SSLEngine的SSL、TLS、StartTLS支持6、负载平衡7、使用mock进行单元测试8、jmx整合9、基于StreamIoHandler的流式I/O支持10、IOC容器的整合:Spring、PicoContainer11、平滑迁移到Netty平台二:实践    首先讲一下

3、客户端的通信过程:   客户端通信过程1.通过SocketConnector同服务器端建立连接 2.链接建立之后I/O的读写交给了I/OProcessor线程,I/OProcessor是多线程的 3.通过I/OProcessor读取的数据经过IoFilterChain里所有配置的IoFilter,IoFilter进行消息的过滤,格式的转换,在这个层面可以制定一些自定义的协议 4.最后IoFilter将数据交给Handler进行业务处理,完成了整个读取的过程 5.写入过程也是类似,只是刚好倒过来,通过IoSession.wri

4、te写出数据,然后Handler进行写入的业务处理,处理完成后交给IoFilterChain,进行消息过滤和协议的转换,最后通过I/OProcessor将数据写出到socket通道 IoFilterChain作为消息过滤链 1.读取的时候是从低级协议到高级协议的过程,一般来说从byte字节逐渐转换成业务对象的过程 2.写入的时候一般是从业务对象到字节byte的过程 IoSession贯穿整个通信过程的始终   1.创建服务器    package com.gewara.web.module.base;import java.

5、io.IOException; import java.net.InetSocketAddress; import java.nio.charset.Charset;import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org

6、.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor;/** *Mina服务器** @author mike** @since 2012-3-15 */ public class HelloServer{        private static final int PORT=8901;// 定义监听端口         public static void main(

7、String[]args) throws IOException{            // 创建服务端监控线程           IoAcceptoracceptor= new NioSocketAcceptor();                       // 设置日志记录器           acceptor.getFilterChain().addLast("logger", new LoggingFilter());                       // 设置编码过滤器           

8、acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));                      // 指

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。