`
tw801
  • 浏览: 13049 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于MINA框架快速开发网络应用程序

    博客分类:
  • java
阅读更多

基于MINA框架快速开发网络应用程序

 

1.MINA框架简介
MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架。通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中。MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、Apache Qpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。MINA框架当前稳定版本是1.1.6,最新的2.0版本目前已经发布了M1版本。
MINA框架的特点有:基于java NIO类库开发;采用非阻塞方式的异步传输;事件驱动;支持批量数据传输;支持TCP、UDP协议;控制反转的设计模式(支持Spring);采用优雅的松耦合架构;可灵活的加载过滤器机制;单元测试更容易实现;可自定义线程的数量,以提高运行于多处理器上的性能;采用回调的方式完成调用,线程的使用更容易。

2.MINA框架的常用类
类NioSocketAcceptor用于创建服务端监听;
类NioSocketConnector用于创建客户端连接;
类IoSession用来保存会话属性和发送消息;
类IoHandlerAdapter用于定义业务逻辑,常用的方法有:
方法 定义
sessionCreated() 当会话创建时被触发
sessionOpened() 当会话开始时被触发
sessionClosed() 当会话关闭时被触发
sessionIdle() 当会话空闲时被触发
exceptionCaught() 当接口中其他方法抛出异常未被捕获时触发此方法
messageRecieved() 当接收到消息后被触发
messageSent() 当发送消息后被触发


3.服务端应用开发示例
下面将以MINA2.0M1版本为基础,通过一个范例来演示一下如何使用MINA框架进行开发。开发环境为jdk6.0,开发工具NetBeans6.0,所需jar包slf4j-api.jar、slf4j-jdk14.jar、MINA-core-2.0.0-M1.jar。
首先定义一个业务逻辑处理器TimeServerHandler,继承自IoHandlerAdapter,实现的功能有:当客户端创建会话时会显示客户端设备的IP和端口;当客户端输入quit时结束会话;客户端输入其它内容时则向客户端发送当前时间。代码如下:
public class TimeServerHandler extends IoHandlerAdapter
{
@Override
public void sessionCreated(IoSession session) {
//显示客户端的ip和端口
System.out.println(session.getRemoteAddress().toString());
}
@Override
public void messageReceived( IoSession session, Object message ) throws Exception
{
String str = message.toString();
if( str.trim().equalsIgnoreCase("quit") ) {
session.close();//结束会话
return;
}
Date date = new Date();
session.write( date.toString() );//返回当前时间的字符串
System.out.println("Message written...");
}
}
再定义一个类MinaTimeServer用来启动服务端:
public class MinaTimeServer
{
private static final int PORT = 9123;//定义监听端口
public static void main( String[] args ) throws IOException
{
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));//指定编码过滤器
acceptor.setHandler( new TimeServerHandler() );//指定业务逻辑处理器
acceptor.setDefaultLocalAddress( new InetSocketAddress(PORT) );//设置端口号
acceptor.bind();//启动监听
}
}

4.测试
首先运行MinaTimeServer,启动服务端,接着在命令行运行“telnet 127.0.0.1 9123”,来登录,这时会看到服务端输出如下:
2008-2-21 16:15:29 org.apache.MINA.filter.logging.LogLevel$4 log
/10.64.2.137:4140 IP和端口号
信息: CREATED
2008-2-21 16:15:29 org.apache.MINA.filter.logging.LogLevel$4 log
信息: OPENED 在客户端输入回车,在客户端可以看到服务端返回当前的时间:
Thu Feb 21 16:20:14 CST 2008
服务端输出:
2008-2-21 16:20:14 org.apache.MINA.filter.logging.LogLevel$4 log
信息: RECEIVED: HeapBuffer[pos=0 lim=2 cap=2048: 0D 0A] 接收收到回车符
Message written...
2008-2-21 16:20:14 org.apache.MINA.filter.logging.LogLevel$4 log
信息: SENT: HeapBuffer[pos=0 lim=29 cap=30: 54 68 75 20 46 65 62 20 32 31 20 31 36 3A 32 30...]
2008-2-21 16:20:14 org.apache.MINA.filter.logging.LogLevel$4 log
信息: SENT: HeapBuffer[pos=0 lim=0 cap=0: empty] 5.客户端开发示例
首先定义类TimeClientHandler来处理消息接收事件:
class TimeClientHandler extends IoHandlerAdapter{
public TimeClientHandler() {
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println(message);//显示接收到的消息
}
}
接着定义MinaTimeClient类用于连接服务端,并向服务端发送消息:
public class MinaTimeClient {
public static void main(String[] args) {
// 创建客户端连接器.
NioSocketConnector connector = new NioSocketConnector();
connector.getFilterChain().addLast( "logger", new LoggingFilter() );
connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" )))); //设置编码过滤器
connector.setConnectTimeout(30);
connector.setHandler(new TimeClientHandler());//设置事件处理器
ConnectFuture cf = connector.connect(
new InetSocketAddress("127.0.0.1", 9123));//建立连接
cf.awaitUninterruptibly();//等待连接创建完成
cf.getSession().write("hello");//发送消息
cf.getSession().write("quit");//发送消息
cf.getSession().getCloseFuture().awaitUninterruptibly();//等待连接断开
connector.dispose();
}
}
6.总结
通过上述示例可以了解到:使用MINA框架来开发的网络应用程序代码结构更清晰;MINA框架完成了底层的线程管理;MINA内置的编码器可以满足大多数用户的需求,省去了开发人员消息编码解码的工作。具称使用MINA开发服务器程序的性能已经逼近使用 C/C++ 语言开发的网络服务。因此,建议在网络应用程序开发过程中尝试使用MINA框架来提高我们的开发效率和应用程序的执行效率。

网通系统集成公司 杨庆成

分享到:
评论
8 楼 kunsyliu 2012-10-18  
我写的mina客服端连接服务器地址:119.62.128.50:8881

为什么我的客服端会马上关闭session???

求大神们解释下!!!!

…………等,雪地里……!!!!!!!
7 楼 quiii 2009-01-13  
- -! mina官方示例 时间服务器 翻译得不错
6 楼 whaosoft 2008-11-28  
  好 学习一下!
5 楼 shijiyu 2008-10-07  
楼主写的很详细 正在做一个mina框架的项目 学习
4 楼 xcly 2008-07-22  
最近正好开发一个统计系统,需要用到mina,跟杨大哥学习下~~
看到你的名字觉得很熟,突然记得你吉林四平的彩铃系统正是出自你的手笔~~~
3 楼 melin 2008-03-02  
二月份的程序员上有篇文章介绍了..讲的比较清晰!
2 楼 剑事 2008-03-02  
这东西是不是没有同步连接模式

找了好多地方都是异步的资料
1 楼 galaxystar 2008-03-02  
不错,好几个项目都用它!
希望 mina 仍旧保持着,简单,高效。

相关推荐

    mina

    1. **基于MINA框架快速开发网络应用程序(转载).html**:这可能是一个教程或指南,教读者如何利用MINA快速构建网络应用,可能包含基本概念、设置步骤和简单示例。 2. **Apache_Mina_Server_2.0中文参考手册V1.0.pdf*...

    mina框架使用总结.doc

    使用 MINA 框架可以快速开发网络应用程序,例如聊天室、游戏服务器、网络爬虫等。 5. MINA 框架的配置 MINA 框架的配置主要包括 Acceptor 的配置、FilterChain 的配置、Handler 的配置等。 * Acceptor 的配置:...

    MINA文档

    - **基于MINA框架快速开发网络应用程序(转载).html**:这篇文章可能介绍了如何使用MINA快速构建网络应用,包括基本的配置和代码示例,帮助初学者快速入门。 - **Apache_Mina_Server_2.0中文参考手册V1.0.pdf**:这是...

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

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

    mina框架开发完整架包下载!

    Mina框架是一个高性能、事件驱动的网络应用框架,主要用于简化Java网络编程,特别是TCP和UDP协议的处理。...通过下载的“Mina完整架包”,开发者可以获得所有必要的组件,开始创建自己的网络应用程序。

    MiNA框架新人指导

    MiNA框架是一种基于Java的高性能网络应用程序开发框架,它简化了网络编程中的复杂性,使开发者能够更加专注于业务逻辑而不是底层网络细节。MiNA提供了一套强大的API来处理各种网络通信任务,包括但不限于TCP/IP和UDP...

    mina框架资源包

    Mina框架,全称为Apache Mina,是一款基于Java开发的网络通信应用框架,它提供了一种简单而高性能的方式来构建网络服务,尤其在处理TCP/IP、UDP/IP以及SSL/TLS协议方面表现卓越。本资源包包含了实现Mina框架基础功能...

    Mina框架+常用JAR包

    Mina框架是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化开发TCP、UDP和SSL/TLS协议服务器和客户端的过程。它广泛应用于构建网络服务,如FTP、SMTP、NNTP等协议的服务器,以及任何基于...

    mina框架的demo 入门,开发

    Mina框架是一个基于Java的网络通信应用框架,它为高性能、高可用性的网络应用程序提供了强大的支持。本教程将深入探讨Mina框架的入门与开发,帮助你快速掌握这个框架的关键概念和技术。 首先,理解Mina的核心概念至...

    高性能网络架构Mina框架 下载

    2. **在线教程**:互联网上有许多优秀的Mina框架教程,通过这些教程可以快速上手并掌握基本用法。 3. **开源项目**:参与或参考开源社区中的Mina项目可以帮助开发者更好地理解其实际应用场景和技术细节。 综上所述...

    微信小程序 Web MINA框架下载.rar

    通过这个MINA框架,开发者不仅可以快速构建微信小程序的基本结构,还能方便地接入微信的多种服务和功能,如社交分享、微信支付等。此外,MINA框架还支持热更新,使得开发者可以实时发布新版本而无需用户手动更新,...

    java mina框架全套

    Java Mina框架是一款高度可扩展且高性能的网络应用开发框架,专为开发网络服务和协议处理应用程序而设计。它提供了一种简洁、高效的API,使得开发者可以轻松地创建基于TCP/IP和UDP/IP协议的服务器和客户端应用。Mina...

    使用 Apache MINA 开发高性能网络应用程序

    Apache MINA 是一个高度可扩展的网络应用框架,专注于提供高性能和高可用性的服务。它主要基于 Java NIO(非阻塞I/O)技术,允许开发者构建TCP/UDP网络服务以及串口通信程序。MINA 提供了一套丰富的组件和过滤器系统...

    apache mina 框架实例

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用在开发网络通信应用,如TCP/IP和UDP/IP协议的服务器和客户端。这个框架允许开发者以一种简单、高效的方式处理I/O操作,同时提供了丰富的功能,如多...

    基于Android开发MINA框架使用详解

    此时,我们可以借助开源框架MINA(Multi-purpose Infrastructure for Network Applications)来构建高效、可扩展的网络应用程序。MINA是一个用Java编写的高性能、异步I/O框架,适用于多种传输协议,如TCP/IP和UDP/IP...

    Mina通信框架应用示例

    Mina通信框架,全称为Apache MINA,是一个高度可扩展的、基于Java的网络应用程序开发框架。MINA的名字来源于多语言(Multi-purpose Infrastructure for Network Applications),它提供了非阻塞I/O(Non-blocking I/...

    Mina框架入门介绍

    Apache Mina 框架是一个强大的网络通信框架,它的核心目标是简化开发高效且可扩展的网络应用程序。Mina 提供了基于事件驱动和异步IO的编程模型,特别是利用了Java NIO作为其默认的底层支持,这使得开发者能够构建高...

    基于MINA框架的高性能短信猫服务平台设计

    MINA框架是一个基于Java的开源网络应用程序框架,它简化了网络应用的开发,帮助开发者创建高性能、高并发的网络应用。在本文中,作者采用Java NIO(New I/O)技术,利用MINA框架的特点来设计和开发一个高性能的短信...

    Apache MINA框架相关资料

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发高质量的网络服务。这个框架适用于多种协议,如TCP/IP和UDP/IP,以及NIO(非...

    mina高性能Java网络框架 v2.1.3

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的MINA版本支持基于Java NIO技术的TCP/...

Global site tag (gtag.js) - Google Analytics