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 ...
随机推荐
- php实现手机拍照上传头像功能
现在手机拍照很火,那么如何使用手机拍照并上传头像呢?原因很简单,就是数据传递,首先手机传递照片信息,这个就不是post传递 也不是get函数传递, 这个另外一种数据格式传递,使用的是$GLOBALS ...
- WPF 得一些问题汇总
1.CallMethodAction <TextBox Height="30" Name="txtUserName" Width="160&qu ...
- ipad ------ 与iPhone的差别
1. 差异 iPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \设计 键盘 API 屏幕方向的支持 … … 2. iP ...
- UIWebView1-b
随着H5的强大,hybrid app已经成为当前互联网的大方向,单纯的native app和web app在某些方面显得就很劣势.关于H5的发展史,这里有一篇文章推荐给大家,今天我们来学习最基础的基于 ...
- linux线程(二)内存释放
linux线程有两种模式joinable和unjoinable. joinable线程:系统会保存线程资源(栈.ID.退出状态等)直到线程退出并且被其他线程join. unjoinable线程:系统会 ...
- 在mesos上安装storm,并且执行wordcount测试程序
mesos上安装storm 1.基本说明 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义 ...
- Form Post
1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...
- IAR中 C语言位定义
__IO_REG8_BIT( SYS, 0xFFFFF802, __READ_WRITE ) #define __IO_REG8_BIT(NAME, ADDRESS, A ...
- 深入解析java虚拟机-jvm运行机制
转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...
- 可爱的PYTHON,更新到0.5版本代码
这书看得挺顺的. 按着思路学习软件开发的主流思想.. cdctools.py # _*_ coding: utf-8 _*_ import os,sys def cdWalker(CDROM, cdc ...