`

Mina IoService

 
阅读更多

 

 一: IOService的职责

 

1、session 管理 : 创建、删除session、监测session 是否失效

2、过滤器链管理 :管理过滤器连,并且用户可以很方便的自定义创建过滤器

3、调用业务handler:在消息接收完成之后,调用业务handler进行处理

4、统计管理: 统计消息发送量(发送对象、字节....)

5、监听网络连接:一直监听绑定端口是否有新的链接

6、数据传输: 管理 server端和 client 数据传输

 

TransportMetadata

getTransportMetadata()

这个方法返回运行中的IoAcceptor或IoConnector的传输元数据。这些元数据包括服务提供者名(nio, apr, rxtx),连接类型(面向连接的/面向非连接的)等。

 

void

addListener(IoServiceListener listener)

这个方法可以为IoService 增加一个监听器,用于监听IoService 的创建、活动、失效、空闲、销毁,具体可以参考IoServiceListener 接口中的方法,这为你参与IoService 的生命周期提供了机会。

 

void

removeListener(IoServiceListener listener)

这个方法用于移除addListener的方法添加的监听器。

 

boolean

isDisposing()

这个方法可以告诉我们IoService是不是正在被销毁。销毁过程可能要持续一段时间,所以在想要得到IoService的当前状态时这个方法很有用。

 

boolean

isDisposed()

这个方法可以告诉我们IoService是不是已经被销毁。只有当IoService释放掉所有资源后才算是被销毁完毕。

 

void

dispose()

这个方法释放掉IoService分配到的所有资源。因为释放过程可能会持续一段时间, 用户可以通过isDisposing()方法检查IO服务的状态, 通过isDisposed()方法判断IO服务是否销毁完毕。

请在关闭IO服务器时一定要调用dispose()。

 

IoHandler

getHandler()

返回当前进程serbice关联的handler

 

void

setHandler(IoHandler handler)

这个方法用于向IoService 注册IoHandler,同时有getHandler()方法获取Handler

 

Map<Long,IoSession>

getManagedSessions()

这个方法获取IoService 上管理的所有IoSession,Map 的key 是IoSession 的id。

 

int

getManagedSessionCount()

返回当前service 上绑定的session数量

 

IoSessionConfig

getSessionConfig()

这个方法用于获取IoSession 的配置对象,通过IoSessionConfig 对象可以设置Socket 连接的一些选项。

 

IoFilterChainBuilder

getFilterChainBuilder()

返回当前service的拦截器连,用户可以在改链上添加自己的过滤器,在service绑定之前

 

void

setFilterChainBuilder(IoFilterChainBuilder builder)

定义service的拦截器链

 

DefaultIoFilterChainBuilder

getFilterChain()

返回当前service默认的那个filterchain,是getFilterChainBuilder() 快捷方式

 

boolean

isActive()

当前service是否在活动

 

long

getActivationTime()

返回这个service 被激活现在的时间,也就是service存活了多久.  如果这个service 不是活动状态咋返回它最好一次活动的时间

 

Set<WriteFuture>

broadcast(Object message)

向所有注册了的session 广播消息

 

void

setSessionDataStructureFactory(IoSessionDataStructureFactory sessionDataStructureFactory)

 向新注册的service 放一些初始化的数据

 

int

getScheduledWriteMessages()

返回信息数量 (这里的信息时在内存等待socket向外写的)

 

IoServiceStatistics

getStatistics()

返回service的 IoServiceStatistics 对象.

 

 

二:先看下IOService的类图结构

 

   黄色的代表接口,蓝色的抽象类,绿色的代表实际的类

   NioSocketAcceptor :     非阻塞的server端的Socket

   NioDatagramAcceptor: 非阻塞的server端的Socket  (基于UDP协议)

   AprScoketAcceptor  : 基于APR阻塞式的socket

   VmPipeScoketAcceptor  :基于管道的Socket

 

   NioScoketConnector : 非阻塞的client端的Socket

   NioDatagramConnector: 基于UDP协议 非阻塞的client端的Socket

   AprScoketConnector :基于Apr的scoket

   ProxyConnector :提供代理的scoket

   VmPipeConnector:基于管道的socket

  

  三.状态

 

    你可以通过以下方法获得IoService的状态:

    isActive() : 如果服务可以接受进来的请求,这个方法返回true

    isDisposing() : dispose()被调用后这个方法返回true。它不能告诉你服务是否真正被销毁了(一些会话可能还会被处理)

    isDisposed() : 当dispose(boolean)方法被调用后, 这个方法返回true,表示所有的线程都停止了。

 

    销毁IOService

    acceptor.dispose();   // 停止服务,并等待所有会话进入非活动状态  

    acceptor.dispose( true );   // 停止服务,并等待所有会话都处理完毕。  

   

 

 

分享到:
评论

相关推荐

    java-mina通信框架详解.docx

    在Mina中,IoService接口提供了添加和移除监听器的能力,允许开发者监听IoService的生命周期事件,如创建、活动、失效等,增强了对服务的控制能力。此外,IoService还提供了管理IoSession的方法,如打开、关闭和获取...

    Mina2中文文档

    - **IoService介绍**:IoService是Mina的核心组件之一,负责管理I/O操作。本章节深入讲解了IoService的工作原理和使用方式。 - **IoService细节**:进一步探讨了IoService的具体实现细节,包括Acceptor和Connector两...

    mina中文开发手册.pdf

    1. **编写IoService**:根据Mina的架构设计,首先需要创建IoService实例。在本例中,因为是要实现服务器端,所以会使用`IoAcceptor`接口的实现类`NioSocketAcceptor`。 ```java IoAcceptor acceptor = new ...

    Apache_Mina_Server_2.0中文参考手册V1.0.pdf

    整个通信流程中,Mina通过IoService建立连接、IoProcessor进行数据处理、IoFilter完成数据过滤、IoHandler处理业务逻辑,这四大组件的共同协作使得网络通信的实现既高效又方便。Mina的设计架构和组件化的设计思想,...

    mina-core-2.0.1.jar,apache-mina-2.0.1

    使用 MINA 开发时,开发者首先需要配置 IoService,如 NioSocketAcceptor 或 NioDatagramAcceptor,然后创建 IoHandler 实现,接着设置过滤器链,并启动服务监听特定的端口。在接收到数据后,IoHandler 会调用相应的...

    Mina2源码分析

    从IoService接口到具体的IoAcceptor、IoConnector、IoProcessor等组件的实现,Mina2不仅提供了灵活的配置选项,同时也保证了高性能和稳定性。理解这些核心概念对于掌握Mina2的应用和开发至关重要。

    Mina 框架研究与实现

    Mina的架构主要由几个关键组件构成,包括IoService、IoHandler、IoFilter,以及它们之间的交互机制。IoService充当了应用程序的入口,负责底层通信接入。IoHandler则聚焦于业务逻辑处理,无需关注实际的通信细节,只...

    一个应用mina的实例(源码)

    有了"Mina实例源码"的标签,你可以通过分析"BTUSimulator"的源码,了解如何设置Mina的IoService、FilterChain、Session等核心组件,以及如何处理网络事件。源码学习将有助于理解Mina的内部工作机制,提高你在网络...

    Mina学习笔记

    Apache Mina是一个基于Java的网络通信框架,专为高性能、高可用性和可扩展性而设计。...在深入学习Mina的过程中,理解IoService及其子类的工作原理,以及如何结合IoHandler实现业务逻辑,对于掌握Mina框架至关重要。

    深入理解Mina

    Apache Mina是一个高性能的网络应用程序框架,它简化了网络编程,使得开发者可以更加容易地创建可伸缩的网络应用程序。Mina支持异步I/O操作,适用于需要大量并发连接的应用,比如聊天服务器、邮件服务器、游戏服务器...

    mina学习笔记,记录所有API

    5. **IoService / IoAcceptor / IoConnector**: IoService是服务端和客户端的抽象,IoAcceptor负责监听和接受客户端连接,IoConnector则用于连接到远程服务器。 6. **Event-driven模型**: MINA基于事件驱动模型,当...

    Apache_Mina_Server中文参考手册.pdf

    与Java NIO不同的是,在Mina中IoService和IoProcessor是两个独立的功能接口。 3. IoFilter:定义了一组拦截器接口,可以实现诸如日志输出、黑名单过滤以及数据的编码(write方向)和解码(read方向)等功能。其中,...

    Mina官方介绍

    IoService是Mina中的核心服务接口,负责管理网络连接和I/O操作。IoHandler则是业务逻辑处理的接口,当IoService接收到网络事件时,会将其传递给相应的IoHandler进行处理。这种服务与处理分离的设计模式使得Mina能够...

    MINA网络通信框架.pdf

    与标准的Java NIO不同,MINA将IoService和IoProcessor的功能分开。IoProcessor调用IoFilter链,并最终调用IoHandler处理数据。 3. IoFilter:IoFilter接口定义了一组拦截器,用于执行各种任务,如日志记录、访问...

    Mina案例+使用文档.pdf

    Mina的核心概念之一是`IoService`,它是应用程序与网络交互的入口。`IoService`有两个扩展接口:`IoAcceptor`和`IoConnector`,分别用于服务器端和客户端。 - **IoAcceptor**:负责监听特定端口的连接请求,并创建...

    Mina 实例 包含jar包

    1. **IoService**: 这是Mina框架的核心服务接口,包括IoAcceptor(用于监听并接受连接)和IoConnector(用于发起连接)。 2. **Session**: IoSession代表一个网络连接,它维护着与特定客户端的连接状态,如读写缓冲...

    MINA源码分析,内涵类的讲解

    MINA的核心是`IoService`接口,它定义了服务端和客户端的基本功能。`IoAcceptor`是服务端接口,负责监听和接受新的连接,而`IoConnector`则代表客户端,用于建立到远程服务器的连接。它们都依赖于`Session`接口,...

    MIna2.0学习笔记

    2.1. **IoService接口**:这是Mina的核心接口,表示一个网络服务,可以是服务器端或客户端。它定义了开始、停止、暂停和恢复服务的方法,以及管理和处理连接的能力。 2.1.1. **类结构**:IoService接口的实现类包括...

Global site tag (gtag.js) - Google Analytics