`

mina简介

    博客分类:
  • java
阅读更多

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。

目前正在使用 MINA 的软件包括有:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、Openfire 等等。

官方网址是:http://mina.apache.org/

mina2.0包: mina2.0 ,还有其他包可在http://mina.apache.org/downloads.html 下载

mina的依赖包:slf4j

MINA 的基础架构:

MINA 的架构图如下:

 见附件
 
 
在图中的模块链中,IoService 便是应用程序的入口,相当于我们前面代码中的 IoAccepter,IoAccepter 便是 IoService 的一个扩展接口。IoService 接口可以用来添加多个 IoFilter,这些 IoFilter 符合责任链模式并由 IoProcessor 线程负责调用。而 IoAccepter 在 ioService 接口的基础上还提供绑定某个通讯端口以及取消绑定的接口。

当前版本的 MINA 还提供了除 SocketAccepter 外的基于数据报文通讯的 DatagramAccepter 以及基于管道通讯的 VmPipeAccepter。另外还包括串口通讯接入方式,目前基于串口通讯的接入方式已经在最新测试版的 MINA 中提供。你也可以自行实现 IoService 接口来使用自己的通讯方式。

而在上图中最右端也就是 IoHandler,这便是业务处理模块。相当于前面例子中的 HelloHandler 类。在业务处理类中不需要去关心实际的通讯细节,只管处理客户端传输过来的信息即可。编写 Handler 类就是使用 MINA 开发网络应用程序的重心所在,相当于 MINA 已经帮你处理了所有的通讯方面的细节问题。为了简化 Handler 类,MINA 提供了 IoHandlerAdapter 类,此类仅仅是实现了 IoHandler 接口,但并不做任何处理。

一个 IoHandler 接口中具有如下一些方法(摘自 MINA 的 API 文档):

void exceptionCaught (IoSession session, Throwable cause)
                   当接口中其他方法抛出异常未被捕获时触发此方法
void messageReceived (IoSession session, Object message)
                   当接收到客户端的请求信息后触发此方法.
void messageSent (IoSession session, Object message)
                   当信息已经传送给客户端后触发此方法.
void sessionClosed (IoSession session)
                   当连接被关闭时触发,例如客户端程序意外退出等等.
void sessionCreated (IoSession session)
                   当一个新客户端连接后触发此方法.
void sessionIdle (IoSession session, IdleStatus status)
                   当连接空闲时触发此方法.
void sessionOpened (IoSession session)
                   当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发

前面我们提到 IoService 是负责底层通讯接入,而 IoHandler 是负责业务处理的。那么 MINA 架构图中的 IoFilter 作何用途呢?答案是你想作何用途都可以。但是有一个用途却是必须的,那就是作为 IoService 和 IoHandler 之间的桥梁。IoHandler 接口中最重要的一个方法是 messageReceived,这个方法的第二个参数是一个 Object 型的消息,总所周知,Object 是所有 Java 对象的基础,那到底谁来决定这个消息到底是什么类型呢?答案也就在这个 IoFilter 中。在前面使用的例子中,我们添加了一个 IoFilter 是 new ProtocolCodecFilter(new TextLineCodecFactory()),这个过滤器的作用是将来自客户端输入的信息转换成一行行的文本后传递给 IoHandler,因此我们可以在 messageReceived 中直接将 msg 对象强制转换成 String 对象。

而如果我们不提供任何过滤器的话,那么在 messageReceived 方法中的第二个参数类型就是一个 byte 的缓冲区,对应的类是 org.apache.mina.common.ByteBuffer。虽然你也可以将解析客户端信息放在 IoHandler 中来做,但这并不是推荐的做法,使原来清晰的模型又模糊起来,变得 IoHandler 不只是业务处理,还得充当协议解析的任务。

MINA自身带有一些常用的过滤器,例如LoggingFilter(日志记录)、BlackListFilter(黑名单过滤)、CompressionFilter(压缩)、SSLFilter(SSL加密)等。

  • 大小: 27.4 KB
分享到:
评论

相关推荐

    apache网络框架mina简介

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写。MINA旨在简化网络编程,特别是TCP/IP和UDP/IP协议的应用开发,如HTTP、...

    mina中文开发手册

    #### 一、Apache Mina简介 Apache Mina是一个高度可扩展且功能强大的网络通信框架,它简化了基于TCP/IP和UDP/IP协议的应用程序开发过程。通过Mina,开发者能够更高效地构建出高性能的服务端和客户端应用程序。 **...

    Mina-Spring-Hibernate.rar_mina_mina hibernate_spring mina

    1. Mina简介 Mina(Java NIO-based Network Application Framework)是基于Java NIO(非阻塞I/O)的网络应用程序框架。它提供了一个事件驱动、异步处理模型,能够处理大量的并发连接,特别适合于高性能、高并发的...

    mina使用mina使用mina使用

    **一、Mina简介** Mina框架支持多种协议,如TCP/IP、UDP/IP、SSL/TLS等,因此常被用于构建服务器端应用,如FTP、SMTP、HTTP服务器等。它基于Java NIO(Non-blocking I/O)API,提供了一种面向服务的、事件驱动的架构...

    mina通信demo

    Mina简介** Mina全称为"Minimum Asynchronous Network Application",它提供了基于事件驱动和非阻塞I/O模型的网络通信API,适用于TCP、UDP等多种协议。Mina的设计目标是简化网络编程,让开发者可以专注于业务逻辑...

    Apache.Mina.Server.2.0.中文参考手册_李海峰

    #### 一、Mina简介 Apache Mina Server是一款高性能、易于使用的网络通信框架,主要用于构建基于TCP/IP或UDP/IP协议的应用程序。该框架的核心优势在于其能够帮助开发者快速构建高效且可扩展的网络服务。Mina支持事件...

    MINA框架中文API(个人翻译)

    **MINA 简介** Apache MINA 提供了一套高级抽象层,使得开发者能够专注于业务逻辑,而不是底层网络通信的细节。它简化了网络编程,特别是对于需要处理大量并发连接的应用来说。MINA 提供了事件驱动的模型,通过 I/O ...

    Mina简单小例

    1. **Mina简介**:首先,会介绍Mina的基本概念,包括其设计目标、主要功能和它在开发网络应用中的角色。 2. **环境准备**:设置开发环境,包括添加Mina的依赖到项目中,这可能涉及到Maven或Gradle的配置。 3. **...

    Java Mina 使用技术

    #### 一、Apache Mina简介 Apache Mina 是一个高度可扩展的网络应用程序框架,用于简化TCP/IP或UDP/IP网络应用的开发。它提供了丰富的功能,如事件驱动的I/O处理、多种传输协议支持以及广泛的过滤器机制等,这些都...

    mina初步学习笔记

    #### 一、Mina简介及下载配置流程 **Mina**,全称**Multipurpose Infrastructure Networked Applications**,是Apache基金会开发的一个高性能网络应用框架,旨在帮助开发者构建高性能和高扩展性的网络应用程序。其...

    基于MINA构建高性能的NIO应用

    #### MINA简介 MINA是由Trustin Lee设计并维护的一款基于Java NIO的通信框架。NIO(Non-blocking I/O,非阻塞I/O)自Java 1.4版本引入以来,为Java开发者提供了更为高效的I/O操作机制。相较于传统的阻塞I/O模型,...

    spring mina

    1. **Spring Mina简介** Spring Mina是Spring框架的一个扩展,它提供了对Apache Mina库的高级封装。Apache Mina是一个事件驱动的网络应用框架,支持多种协议如TCP/IP、UDP、HTTP、FTP等,广泛应用于IoT、游戏服务器...

    spring boot + mina 项目中copy出来的

    2. **Apache Mina简介** Mina是Apache基金会的一个项目,它为开发高性能和高可用性的网络应用提供了基础框架。Mina支持多种I/O模型,如NIO(非阻塞I/O)和BIO(阻塞I/O),并且提供了事件驱动的编程模型,使得处理...

    Mina2.0工作原理以及配置注意事项

    #### 一、Mina简介 **Apache Mina** 是一款高性能且易于使用的网络应用程序框架,其主要目的是帮助开发者轻松构建高性能和高可靠性的网络应用。该框架的核心优势在于其采用了事件驱动的异步API,这使得它能够有效地...

    Android mina 包

    一、Mina简介 Apache Mina(Model-View-Controller for Network Applications)是一个网络通信框架,它简化了开发高性能、高可用性的网络服务的过程。Mina提供了异步事件驱动的网络应用程序架构,适用于TCP/IP和UDP...

    Apache Mina入门

    #### 一、Mina简介与应用场景 ##### Mina概述 Mina(**Mini Network Application**)是一个简洁且易于使用的Java网络应用开发框架,主要针对TCP/IP通信进行优化设计。它能够帮助开发者快速构建网络应用程序,支持...

    mina 入门 教程

    1. **Mina简介** Mina是基于Java的网络应用框架,支持TCP、UDP等多种传输协议。它为开发者提供了事件驱动、非阻塞I/O的网络编程模型,提高了服务器端的并发处理能力。Mina广泛应用于各种网络服务,如FTP、SMTP、...

Global site tag (gtag.js) - Google Analytics