`
zhaohaolin
  • 浏览: 1010654 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于MINA构建简单高性能的NIO应用-一个简单的例子<转>

    博客分类:
  • Mina
 
阅读更多
19 February 2010

本文为Sparkle发于《程序员》2008年2月刊的文章,与《程序员》的协议,可以在个人博客中发布,转载请保留出处。

一个简单的例子

MINA使用非常简单,笔者以前做过一段时间传统的Java Socket开发,不过一直对Java NIO不是很理解,但是MINA很快就上手了,MINA封装了NIO繁琐的部分,使你可以更专注于业务功能实现。话不多说,让我们来看一个简单的例子,一个很常见的例子,时间服务器。(Article by Sparkle) 我们的实现目标是一个能响应多个客户端的请求,然后返回服务器当前的系统时间的功能。传统的Java Socket程序,我们需要每accept一个客户端连接,就创建一个新的线程来响应,这会令到系统整体负载能力有较大的限制,而且我们必须手工编写连接管理等代码。让我们来看看MINA是怎么处理的。

首先我们从官方网站下载MINA 1.1,这里我们假设JDK为1.5以上的版本,如果你使用的是JDK 1.4,请下载MINA 1.0,MINA 1.0跟1.1几乎一样,但是强烈建议使用JDK 1.5以上以获得更好的性能。 解开压缩包之后,能看见很多jar包,这里暂不介绍每个包的具体作用,可以把所有包都导入项目。值得留意的是MINA使用了一个slf4j的日志库,该日志库大有取缔common-logging之势。

public class TimeServer {
  public static void main(String[] args) throws IOException {
    IoAcceptor acceptor = new SocketAcceptor();

    SocketAcceptorConfig cfg = new SocketAcceptorConfig();
    cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
    cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory()));

    acceptor.bind( new InetSocketAddress(8123), new TimeServerHandler(), cfg);
    System.out.println("Time server started.");
  }
}

这里是我们的主程序,非常简单。 首先我们需要一个IoAcceptor,这里我们选择了一个SocketAcceptor,也就是TCP协议。 然后,我们给应用加上日志过滤器和协议编码过滤器。(Article by Sparkle) 最后,我们把acceptor bind到本机的8123端口,并且使用TimeServerHandler来实现协议。

TimeServerHandler是我们实现具体业务功能的地方。

public class TimeServerHandler extends IoHandlerAdapter {
  public void messageReceived(IoSession session, Object msg) throws Exception {
    String str = (String) msg;
    if( "quit".equalsIgnoreCase(str) ) {
    session.close();
    return;
  }

  Date date = new Date();
  session.write( date.toString() );
  System.out.println("Message written...");
  }

  public void sessionCreated(IoSession session) throws Exception {
  System.out.println("Session created...");
  }
}

IoHandlerAdapter提供了7个事件方法,我们要做的事情仅仅是挑选我们需要做出响应的事件进行重载。在我这个例子了,我重载了两个方法。sessionCreated会在客户端连接的时候调用,通常我们会在这里进行一些初始化操作,我这里仅仅是打印一条信息。messageReceived就是整个Handler的中心部分,每一个从客户端发过来的消息都会转化成对该方法的调用。由于我们加入了协议编码过滤器,因此这里获得的Object msg是一个String,而不是默认的ByteBuffer(下文会详细介绍ProtocolCodecFilter)。这里我们实现了一个很简单的业务功能,如果用户输入的是quit,就断开连接,否则就输入当前时间。可以看出,IoSession封装了对当前连接的操作。

至此,我们就实现了一个时间服务器。

文章快速索引

  1. 前言
  2. 一个简单的例子
  3. MINA架构
  4. 优化指南
分享到:
评论

相关推荐

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

    ### 基于MINA构建高性能的NIO应用 #### 概述 MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发高性能网络应用程序方面表现突出。本文将深入探讨MINA的核心概念、优势...

    基于MINA构建简单高性能的NIO应用.pdf

    "基于MINA构建简单高性能的NIO应用.pdf" 这个标题指出,文档主要讨论如何使用MINA框架来构建一个基于非阻塞I/O (Non-blocking I/O, NIO) 的应用程序。MINA是一个开源的Java框架,专为网络通信设计,特别是高性能、高...

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

    在当今的网络编程中,NIO(非阻塞IO)是构建高性能网络应用的一种常见技术。Java NIO提供了一种不同于传统BIO(阻塞IO)的IO处理方式。传统BIO模式下,每个客户端连接通常需要一个单独的线程去处理,这样在面对大量...

    基于MINA构建简单高性能的NIO应用_曾冠东

    MINA框架以其强大的功能和灵活性,为Java开发者提供了一个构建高性能、高并发网络应用的强大工具。无论是对于初学者还是经验丰富的开发者而言,MINA都值得深入了解和学习。通过合理利用MINA提供的特性,开发者可以极...

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。本文将主要关注在Java中使用MINA来实现安全套接层(SSL)和传输层安全(TLS)协议,这两个协议是网络...

    springboot 整合mina 源码,nio通讯基础教程,mina框架基础教程.rar

    Spring Boot以其简洁、快速的起步方式深受开发者喜爱,而Mina则是一个强大的网络通信框架,常用于构建高性能、高并发的网络应用。结合NIO,我们可以创建出更加高效的数据传输服务。 首先,我们要理解Spring Boot的...

    Mina例子包含与spring整合

    1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器端和客户端网络应用程序。它提供了一个事件驱动的模型,允许在高并发场景下处理大量连接,同时保持低内存开销...

    基于高性能NIO的MINA框架的应用

    本文介绍了一种基于高性能Java NIO的MINA框架,用以构建高性能的即时通讯系统服务器。MINA框架(Multipurpose Infrastructure for Network Applications)是基于Java NIO设计的网络应用程序框架,其特点是采用松耦合...

    网络编程(socket、NIO、mina)---demo

    这些技术广泛应用于构建高性能、高并发的网络应用程序。 首先,Socket编程是网络编程的基础,它是TCP/IP协议族的一部分,提供了进程间通信的能力。Socket分为两种类型:基于TCP的面向连接的Socket和基于UDP的无连接...

    mina源码+例子mina-2.0.0-M6.zip

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,用于构建高性能、高可用性的网络应用程序。MINA 提供了一套高级的网络编程抽象层,简化了开发过程,特别是对于那些处理TCP/IP...

    练练手,用mina2.0搭建一个nio客户端

    标题中的“练练手,用mina2.0搭建一个nio客户端”表明了本文将探讨如何使用Mina 2.0框架构建一个基于非阻塞I/O(NIO)的客户端应用。Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和...

    Mina NIO Socket

    在Java世界中,网络编程是一个不可或缺的部分,而Mina NIO(Non-blocking I/O)Socket库则是Java开发者实现高性能、高并发网络服务的重要工具。本文将深入探讨Mina NIO Socket的核心概念、工作原理以及在实际项目中...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    学习Java NIO,你需要理解这些核心概念,并熟练运用它们来构建高性能的网络应用程序。 Mina框架是一个轻量级的网络通信框架,基于Java NIO构建,它简化了网络编程的复杂性,提供了高效的I/O处理能力。Mina支持多种...

    mina-http-2.0.7.jar.zip_mina_mina 获取POST_mina-http_mina-http-2.0

    MINA(Multipurpose Infrastructure for Network Applications)是一个强大的网络应用程序框架,它由Apache软件基金会开发,主要用于构建高性能、高效率的网络服务。MINA的核心设计目标是提供一个与传输协议无关的...

    Apache-Mina-2.rar_apache mina_java mina_mina_mina-core-1.1.3

    Apache Mina是一个强大的开源项目,专门设计用于构建网络应用程序。这个框架的核心目标是提供一个抽象层,使得开发者能够专注于业务逻辑,而不是底层网络通信的复杂性。标题中的"Apache-Mina-2.rar"和"mina-mina-...

    Java Mina 使用技术

    总之,Apache Mina提供了一种简单而强大的方式来开发高性能的网络应用程序,而通过Spring集成,可以更加方便地管理这些复杂的配置。以上配置展示了如何使用Mina创建一个多端口监听的服务器,并定义了相应的处理器和...

    mina apach 网络通信框架高性能例子

    总的来说,Apache MINA是一个强大的网络通信框架,适合构建高性能、高并发的网络应用。通过理解并熟练运用其核心特性,开发者可以构建出稳定、可扩展的网络服务。在实际项目中,可以结合MINA V2.0版本的特性和示例,...

    基于Java的源码-高性能Java网络框架 MINA.zip

    《深入剖析MINA:构建高性能Java网络框架》 MINA(Multi-purpose Infrastructure for Network Applications)是一个用Java编写的高性能、跨平台的网络应用程序框架。它主要用于简化开发人员创建网络服务和应用的...

    NIO学习-Java源代码分享(含netty)

    5. **Mina**:Apache Mina是一个网络通信应用框架,也基于NIO,但它的设计目标是提供一个可扩展的、易于使用的抽象层,使得开发人员可以专注于业务逻辑,而无需关心底层网络通信的复杂性。Mina支持多种协议,如TCP/...

    mina2.0全部jar包

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发Java网络应用,特别是那些基于TCP和UDP协议的应用。MINA 2.0版本是其一个...

Global site tag (gtag.js) - Google Analytics