一: 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 ); // 停止服务,并等待所有会话都处理完毕。
相关推荐
在Mina中,IoService接口提供了添加和移除监听器的能力,允许开发者监听IoService的生命周期事件,如创建、活动、失效等,增强了对服务的控制能力。此外,IoService还提供了管理IoSession的方法,如打开、关闭和获取...
- **IoService介绍**:IoService是Mina的核心组件之一,负责管理I/O操作。本章节深入讲解了IoService的工作原理和使用方式。 - **IoService细节**:进一步探讨了IoService的具体实现细节,包括Acceptor和Connector两...
1. **编写IoService**:根据Mina的架构设计,首先需要创建IoService实例。在本例中,因为是要实现服务器端,所以会使用`IoAcceptor`接口的实现类`NioSocketAcceptor`。 ```java IoAcceptor acceptor = new ...
整个通信流程中,Mina通过IoService建立连接、IoProcessor进行数据处理、IoFilter完成数据过滤、IoHandler处理业务逻辑,这四大组件的共同协作使得网络通信的实现既高效又方便。Mina的设计架构和组件化的设计思想,...
使用 MINA 开发时,开发者首先需要配置 IoService,如 NioSocketAcceptor 或 NioDatagramAcceptor,然后创建 IoHandler 实现,接着设置过滤器链,并启动服务监听特定的端口。在接收到数据后,IoHandler 会调用相应的...
从IoService接口到具体的IoAcceptor、IoConnector、IoProcessor等组件的实现,Mina2不仅提供了灵活的配置选项,同时也保证了高性能和稳定性。理解这些核心概念对于掌握Mina2的应用和开发至关重要。
Mina的架构主要由几个关键组件构成,包括IoService、IoHandler、IoFilter,以及它们之间的交互机制。IoService充当了应用程序的入口,负责底层通信接入。IoHandler则聚焦于业务逻辑处理,无需关注实际的通信细节,只...
有了"Mina实例源码"的标签,你可以通过分析"BTUSimulator"的源码,了解如何设置Mina的IoService、FilterChain、Session等核心组件,以及如何处理网络事件。源码学习将有助于理解Mina的内部工作机制,提高你在网络...
Apache Mina是一个基于Java的网络通信框架,专为高性能、高可用性和可扩展性而设计。...在深入学习Mina的过程中,理解IoService及其子类的工作原理,以及如何结合IoHandler实现业务逻辑,对于掌握Mina框架至关重要。
Apache Mina是一个高性能的网络应用程序框架,它简化了网络编程,使得开发者可以更加容易地创建可伸缩的网络应用程序。Mina支持异步I/O操作,适用于需要大量并发连接的应用,比如聊天服务器、邮件服务器、游戏服务器...
5. **IoService / IoAcceptor / IoConnector**: IoService是服务端和客户端的抽象,IoAcceptor负责监听和接受客户端连接,IoConnector则用于连接到远程服务器。 6. **Event-driven模型**: MINA基于事件驱动模型,当...
与Java NIO不同的是,在Mina中IoService和IoProcessor是两个独立的功能接口。 3. IoFilter:定义了一组拦截器接口,可以实现诸如日志输出、黑名单过滤以及数据的编码(write方向)和解码(read方向)等功能。其中,...
IoService是Mina中的核心服务接口,负责管理网络连接和I/O操作。IoHandler则是业务逻辑处理的接口,当IoService接收到网络事件时,会将其传递给相应的IoHandler进行处理。这种服务与处理分离的设计模式使得Mina能够...
与标准的Java NIO不同,MINA将IoService和IoProcessor的功能分开。IoProcessor调用IoFilter链,并最终调用IoHandler处理数据。 3. IoFilter:IoFilter接口定义了一组拦截器,用于执行各种任务,如日志记录、访问...
Mina的核心概念之一是`IoService`,它是应用程序与网络交互的入口。`IoService`有两个扩展接口:`IoAcceptor`和`IoConnector`,分别用于服务器端和客户端。 - **IoAcceptor**:负责监听特定端口的连接请求,并创建...
1. **IoService**: 这是Mina框架的核心服务接口,包括IoAcceptor(用于监听并接受连接)和IoConnector(用于发起连接)。 2. **Session**: IoSession代表一个网络连接,它维护着与特定客户端的连接状态,如读写缓冲...
MINA的核心是`IoService`接口,它定义了服务端和客户端的基本功能。`IoAcceptor`是服务端接口,负责监听和接受新的连接,而`IoConnector`则代表客户端,用于建立到远程服务器的连接。它们都依赖于`Session`接口,...
2.1. **IoService接口**:这是Mina的核心接口,表示一个网络服务,可以是服务器端或客户端。它定义了开始、停止、暂停和恢复服务的方法,以及管理和处理连接的能力。 2.1.1. **类结构**:IoService接口的实现类包括...