MINA学习之IoService
从上一篇文章中知道,IoService出于MINA体系中的底层。IoService将会帮你维护网络交互,接受消息,发送消息,管理Sessions,管理连接Connections等等。
IoService 是一个接口,服务端的IoAcceptor和客户端的IoConnector均继承了该接口。下面我们将分为以下几个部分介绍IoService
1. IoService Introduction
2. IoService Details
3. IoAcceptor
4. IoConnector
IoService Introduction
如上图,IoService有很多的职能:
1. sessions的管理: 创建和删除sessions, 检查session的空闲状态
2. 过滤连的管理: 管理过滤连,允许用户改变filter chain
3. 回调:当有消息抵达时调用IOHandler
4. 统计管理:统计更新消息的发送次数
5. 监听管理:Manages the Listeners a suer can set up
6. 传输管理: 处理服务端和客户端之间数据的传输
IoService接口提供了以下方法:
1. getTransportMetaData()--该方法返回IoAcceptor,IoConnector在运行时的元数据,包括运营商名称,连接的类型等
2. addListener()--该方法为IoService添加一个IoServiceListener来侦听指定的事件
3. removeListener()--该方法从IoService中移除指定的IoServiceListener
4. isDisposing()--该方法返回IoService是否正在停止
5. isDisposed()--该方法返回IoService是否已经停止
6. dispose()--该方法用于释放IoService分配的所有资源
7. getHandler()--获取该IoService所分配的IoHandler
8. setHandler()--返回分配给该IoService的IoHandler
9. getManagedSessions()--返回当前被IoService管理的所有Session的Map集合
10. getManagedSessionCount()--返回当前被IoService管理的所有Session的大小
11. getSessionConfig()--获取session的配置类
12. getFilterChainBuilder()--返回FilterChain Builder,用于向已创建的session中加入新的Filter
13. setFilterChainBuilder()--为IoService定义一个Filter Chain Builder
14. getFilterChain()--获取当前的Filter Chain
15. isActive()--返回IoService是否处于活动状态
16. getActivationTime()--返回IoServcie被激活的时间
17. broadcast()--将消息发送给所有被管理的Sessions
18. setSessionDataStructureFactory()--
19. getScheduledWriteBytes()--返回将要被发送的字节数
20. getScheduledWriteMessages()--返回将要被发送的消息数
21. getStatistics()--为IoService返回IoServiceStatistics对象
IoService Details
IoAcceptor
1. NioSocketAcceptor:无阻塞(non-blocking)面向socket连接的IoAcceptor
1. creation:创建
public TcpServer() throws IOException {
// Create a TCP acceptor
IoAcceptor acceptor = new NioSocketAcceptor();
// Associate the acceptor to an IoHandler instance (your application)
acceptor.setHandler(this);
// Bind : this will start the server...
acceptor.bind(new InetSocketAddress(PORT));
System.out.println("Server started...");
}
// Create a TCP acceptor
IoAcceptor acceptor = new NioSocketAcceptor(); // Associate the acceptor to an IoHandler instance (your application)
acceptor.setHandler(this); // Bind : this will start the server...
acceptor.bind(new InetSocketAddress(PORT));
}
2. disposal : 关闭
// Stop the service, waiting for the pending sessions to be inactive
acceptor.dispose();
// Stop the service, waiting for the processing session to be properly completed
acceptor.dispose( true );
3. status:状态
4. 管理IoHandler
5. 管理Filter Chain
// Add a logger filter
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast("logger", new LoggingFilter());
// Add a logger filter
DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder();
chain.addLast("logger", new LoggingFilter()); // And inject the created chain builder in the service
acceptor.setFilterChainBuilder(chain);
IoConnector
MINA学习之IoService的更多相关文章
- 【MINA学习笔记】—— 1.体系结构分析[z]
前言 Apache的MINA框架是一个早年非常流行的NIO框架,它出自于Netty之父Trustin Lee大神之手.虽然目前市场份额已经逐渐被Netty取代了,但是其作为NIO初学者入门学习框架是非 ...
- MINA学习汇总
MINA学习汇总 Apache Mina Server 是一个网络通信应用框架,用于开发高性能和高可用性的网络应用程序.它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(然,也可以提供JAVA ...
- mina学习
长连接表示一旦建立了链接,就可以长时间的保持双方的通讯,例如: socket链接,推送平台. 短链接表示建立链接,完成数据的交换之后,就断开链接,例如: http链接. mina 框架是对socket ...
- mina学习(一)
Mina:是一个帮助用户开发高性能和高伸缩性网络应用程序的框架 学习地址链接:http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html ...
- Mina学习之---mina整体流程介绍
现在公司使用的NIO框架一直时候Mina,当然这也的框架还有Netty.虽然一直在用,但只是简单的停留在业务层面,最近面试的时候有问Mina相关的东西.在之前的博客中已经对BIO,NIO,AIO这三种 ...
- Mina学习之IoFilter
IoFilter 是MINA中的一个核心结构,扮演了非常重要的角色.IoFilter在IoService和IoHandler过滤了所有的I/O 事件和请求.如果你有做个web项目的经验,则很类似于we ...
- MINA学习之体系介绍
基于MINA应用程序结构图: 我们可以看出,MINA是应用程序(客户端或服务端)和底层基于TCP,UDP等通讯协议的网络层之间的粘合剂.而且各个模块之间是相互独立的,你只需要在MINA体 系基础上设计 ...
- mina学习总结
一.简介: Apache Mina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mina 的异步 IO 默认使用 ...
- NIO框架Mina学习
前言: 找了篇文章看了看,nio框架数Mina用的最多! 代码: 服务端: package com.mina; import java.net.InetSocketAddress; import ja ...
随机推荐
- [转]EJS入门
今天学习了EJS,转个再点个赞,动态创网页的好方法! 主页:http://www.embeddedjs.com/ 转自:http://www.csser.com/board/4fddc4f0b28ed ...
- MVC页面上多个提交按钮提交到不同的Action
使用mvc扩展类,ActionNameAttribute方法如下: [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, In ...
- 使用ajax和history.pushState无刷新改变页面URL onpopstate(转)
Javascript代码 var htmlData1 = $.ajax( { url: "/getXXXResponse", async: false }).re ...
- 从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
一.前言 本文会详细地阐述caffe-windows的配置教程.由于博主自己也只是个在校学生,目前也写不了太深入的东西,所以准备从最基础的开始一步步来.个人的计划是分成配置和运行官方教程,利用自己的数 ...
- 第 14 章 迭代器模式【Iterator Pattern】
以下内容出自:<<24种设计模式介绍与6大设计原则>> 周五下午,我正在看技术网站,第六感官发觉有人在身后,扭头一看,我C,老大站在背后,赶忙站起来, “王经理,你找我?” 我 ...
- Java 判断操作系统类型(适用于各种操作系统)
Java 判断操作系统类型(适用于各种操作系统) 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以. 为了限制用户使用的操作系统,必须有统一的方法来获取才可 ...
- Ansj分词双数组Trie树实现与arrays.dic词典格式
http://www.hankcs.com/nlp/ansj-word-pairs-array-tire-tree-achieved-with-arrays-dic-dictionary-format ...
- 任正非:华为三十年大限快到了 想不死就得新生(建立战略预备队)cool
华为心声社区官方微信今日发布了任正非8月15日在华为公司内部做的关于战略预备队建设汇报的讲话.讲话内容中提到,华为公司需要组织.结构.人才等所有一切都变化,通过变化使新的东西成长起来. 任正非表示 ...
- QWidget与HWND的互相转换
QWidget与HWND的互相转换 在编写Windows的应用程序时,我们有时不可避免地要与Windows平台固有的Win32 API打交道,但是Win32 API里面常常用到的HWND等诸多句柄QT ...
- java实现栈的数据结构
栈是一种数据结构,只能从一端进行存储和访问.常规操作有压入栈和弹出栈. 特性:先进先出,LIFO 以下是用ArrayList为内核实现一个栈的数据结构 import java.util.ArrayLi ...