`
ezerg
  • 浏览: 274132 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Mina 基本使用和常用类的介绍

阅读更多
Mina 的全称是 Multipurpose Infrastructure for Network Applications ,是用于开发高性能和高可用性的网络应用程序的基础框架。
通过使用 Mina 框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中。

框架经常使用以下几个类:
NioSocketAcceptor 类用于创建服务端监听;NioSocketConnector 类用于创建客户端连接;IoSession 类用来保存会话属性和发送消息;IoHandlerAdapter 类用于定义业务逻辑。
	public static void main(String[] args) throws Exception {
		int PORT = 6789;
	    IoAcceptor acceptor = new NioSocketAcceptor();  
	    // 注册filter   
	   acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );  
	   acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));  
	    // 注册你的业务处理类   
	    acceptor.setHandler( new TimeServerHandler() );  // TimeServerHandler 请查看org.apache.mina.example.gettingstarted.timeserver包
	    // 配置参数   
	    acceptor.getSessionConfig().setReadBufferSize( 2048 );  
	    acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );  
	    // 让Acceptor在绑定的地址侦听   
	    acceptor.bind( new InetSocketAddress(PORT) );  
	}

程序运行后,可以通过 telnet 连接到 6789 端口,测试一下 TimeServerHandler 类的功能。

基本的流程如下:
User -> IoService -> IoProcessor -> IoFilter -> IoFilter -> IoHandler
对象 <-    对象   <-       对象     <-   对象 <-   对象  <-    对象

以下是框架核心接口的简单说明:
org.apache.mina.core.service.IoService 接口:
它是 IoAcceptor 和 IoConnector 的父接口,是框架所有功能的总接口。
它有一个实现类 AbstractIoService ,它有一个 Executor 来处理事件,还有一个 AtomicInteger 确保 ID 的唯一。

org.apache.mina.core.service.IoAcceptor 接口:
它用于绑定 IP 和端口,接收客户端的连接请求,同时会触发相应的事件给 IoHandler 去处理。
它有一个实现类 AbstractIoAcceptor ,是基本功能的实现,此类承继了 AbstractIoService 类。
AbstractIoAcceptor 有一个子类 AbstractPollingIoAcceptor<S extends AbstractIoSession, H> ,轮询的方式处理会话和服务器端 socket 连接。
上面介绍的 NioSocketAcceptor 类就是 AbstractPollingIoAcceptor<S extends AbstractIoSession, H> 的子类。
AbstractIoAcceptor 有一个子类 AbstractPollingConnectionlessIoAcceptor<S extends AbstractIoSession, H> ,处理数据报文的传输。

org.apache.mina.core.service.IoConnector 接口:
它用于连接服务器指定的 IP 和端口,发送客户端的连接请求,同时会触发相应的事件给 IoHandler 去处理。
它有一个实现类 AbstractIoConnector ,是基本功能的实现,此类承继了 AbstractIoService 类。
AbstractIoConnector 有一个子类 AbstractPollingIoConnector<T extends AbstractIoSession, H> ,轮询的方式处理会话和客户端 socket 连接。
上面介绍的 NioSocketConnector 类就是 AbstractPollingIoConnector<S extends AbstractIoSession, H> 的子类。

org.apache.mina.core.service.IoProcessor<S extends IoSession> 接口:
它负责实际的 IO 操作。
它有一个实现类 SimpleIoProcessorPool<S extends AbstractIoSession> ,负责管理具体的会话。
它有一个实现类 AbstractPollingIoProcessor<S extends AbstractIoSession>,轮询的方式的 IO 操作。

org.apache.mina.core.service.IoHandler 接口:
负责处理所有被框架触发的事件,这些事件是 IoProcessor 发出来的,并且同一个 IoProcessor 负责处理多个会话。
它有一个默认的实现类 IoHandlerAdapter ,只是用适配器模式简单的封装。

org.apache.mina.core.service.IoServiceListener 接口:
它继承 java.util.EventListener 接口,负责监听 IoService 相关的事件。
和它相关的有一个类 IoServiceListenerSupport ,负责将 IoService 和对应监听器整合到一起,方便使用。

org.apache.mina.core.session.IoSession 接口:
它表示通信双端的连接,与底层的传输类型无关。

org.apache.mina.core.session.IoSessionConfig 接口:
它表示会话的配置信息,包含读缓冲区大小、会话数据吞吐量、计算吞吐量时间间隔、指定会话端的空闲时间和写请求的超时时间等等。

org.apache.mina.core.session.IoSessionInitializer<T extends IoFuture> 接口:
它定义了一个回调函数,可以通过 AbstractIoService 类的 initSession 方法作为参数使用。

org.apache.mina.core.session.IoSessionRecycler 接口:
它负责回收不再使用的会话。
它有一个实现类 ExpiringSessionRecycler ,用于回收超时失效的会话。

org.apache.mina.core.session.IoEvent 类:
它实现了 Runnable 接口,表示一个事件或请求,它根据事件类型向会话的过滤器链上的监听者发出信号。

org.apache.mina.core.session.IoEventType 枚举:
它定义了事件的类型。

以上只是底层结构的说明,实现机制还需要从上层的具体类的调用进行分析。

1
2
分享到:
评论

相关推荐

    Mina框架+常用JAR包

    Mina框架是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化开发TCP、UDP和SSL/TLS协议服务器和...了解并熟练掌握Mina框架的使用和JAR包管理,有助于提升Java网络应用的开发效率和质量。

    Mina开发实例(服务端、客户端)DEMO

    Apache Mina是一个高度可扩展的网络通信框架,它允许开发者创建高性能、高效率的服务端和客户端应用程序。...通过学习和实践这个DEMO,开发者可以掌握Mina的基本用法,为构建高性能、高并发的网络应用打下坚实的基础。

    Android长连接神器框架Mina之服务器和客户端例子

    在Android环境下,Mina的使用基本与Java环境相同,但由于Android的限制,可能需要额外处理线程和权限问题。在提供的"Android长连接Mina框架demo"中,包含了服务器和客户端的示例代码,可以帮助开发者快速理解和上手...

    mina包

    如果包含文档,将有助于学习如何配置和使用MINA。示例项目则能帮助初学者快速掌握MINA的基本用法。 总的来说,Apache MINA是一个强大的Java网络编程框架,适合开发高性能的服务器应用。通过使用MINA,开发者可以...

    MINA_框架简介适合新手

    1. 事件驱动:MINA框架可以将整个通信过程划分为几个基本的阶段,如建立连接、数据通信、关闭连接。 2. 异步操作:MINA框架使用JAVA NIO作为底层支持,提供异步操作的编程模型。 3. 高性能、高扩展性:MINA框架可以...

    mina初步学习笔记

    - **mina-core-2.0.0-M1.jar**:这是Mina的核心库,提供了基本的网络处理功能。 - **slf4j-api-1.5.2.jar**与**slf4j-log4j12-1.5.2.jar**:用于日志记录的SLF4J API及其Log4j实现。 - **log4j-1.2.14.jar**:Log...

    mina,XUtil,sliding多个框架demo

    标题中的"mina, XUtil, sliding多个框架demo"提到了三个关键的开发框架:Mina、XUtil和滑动菜单(通常指的是SlidingMenu库)。这些框架在Android应用开发中有着重要的作用,下面将分别详细介绍这三个框架以及它们的...

    mina基础技术

    除了上述基本概念和技术外,MINA还提供了许多高级特性和功能,这些特性使开发者能够构建更加复杂和高性能的网络应用。 - **过滤器机制**:MINA提供了一种灵活的方式来添加和移除过滤器。过滤器可以用来预处理或后...

    Mina2.0完全剖析,完全自学手册

    **`IoBuffer` 常用方法**:`IoBuffer`是Mina中用来处理二进制数据的重要类,提供了一系列方法来操作缓冲区中的数据,如`allocate`、`flip`、`rewind`等。 **示例**:下面的示例演示了如何根据文本换行符来进行编...

    mina-social-business-master.zip

    Mina是微信小程序开发中常用的一个框架,它基于TypeScript构建,提供了丰富的组件和API,帮助开发者更高效地构建小程序。在"mina-social-business-master"这个项目中,Mina框架被用来搭建整个社交应用的结构,包括...

    基于微信小程序的电商平台leshare-mina-master.zip

    本项目"基于微信小程序的电商平台leshare-mina-master.zip"旨在探讨如何利用微信小程序技术构建一个完整的电商平台,下面将对该项目的核心技术和实现方式进行详细介绍。 一、微信小程序基础 微信小程序是由微信...

    kettle7常用jar包

    这个16MB的“kettle7常用jar包”是针对Kettle 7的一个精简版集合,包含了执行基本转换和任务所需的库文件,它在满足大多数常规操作的同时,相比于完整的70MB版本,更加轻量级。 1. **kettle-engine-5.1.0.0-752.jar...

    excel常用统计函数

    Excel是当今世界上广泛使用的电子表格软件之一,它不仅能够帮助我们进行日常的数值计算,而且在数据分析和统计方面也提供了强大的支持。统计函数在Excel中扮演了非常重要的角色,能够帮助用户完成各种复杂的数据分析...

    jar包介绍大全

    本文旨在为初学者详细介绍一些常用的jar包及其应用场景,帮助大家更好地理解和掌握这些重要的资源。 #### JTA (jta.jar) JTA (Java Transaction API) 是一个用于管理事务的标准接口,它定义了应用程序如何与事务...

    java常用第三方软件包大全_.docx

    4. **Commons-lang**:扩展了Java SDK中的`java.lang`包,提供了一些实用工具类,简化基本操作。 5. **pingyin4j**:中文转拼音库,常用于中文文本的处理和搜索。 6. **Commons-IO**:提供了处理输入/输出流的工具...

    ssh2 所需的jar包

    2. **Java SSH2库**:Java中常用的SSH2库有JSch和Apache MINA SSHD等。这些库实现了SSH2协议,使得Java应用程序能够实现SSH2的功能,如SSH连接、SFTP文件传输等。 3. **JSch**:JSch是一个纯Java实现的SSH2库,可以...

    基于微信小程序的线上报名系统的设计与实现.pdf

    - 金额类字段建议使用DECIMAL类型确保精确度。 3. **索引优化**: - 在User表中对用户名建立唯一索引,避免重复注册。 - Activity表中的活动时间字段添加索引,便于按时间排序查询。 - Order表中根据常用查询...

    2020微信小程序.pdf

    首先,我们来看一下小程序的基本介绍。在这一章中,教程会探讨小程序的诞生背景和市场趋势。微信小程序的兴起源于用户对快速、便捷应用的需求,以及手机内存限制带来的困扰。发展趋势部分可能涵盖了小程序的用户增长...

    微信小程序源码_今日更新选课投票.zip

    在深入探讨之前,我们先来了解一下微信小程序的基本架构和开发流程。 微信小程序的开发环境通常基于微信开发者工具,它提供了代码编辑、预览、调试和发布等一系列功能。开发者需要掌握的主要语言是WXML(微信小程序...

Global site tag (gtag.js) - Google Analytics