`

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

    博客分类:
  • 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.服务端应用开发示例
下面将以MINA 2.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..."); 
} 
} 

 

  再定义一个类Mina TimeServer用来启动服务端:

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.测试
首先运行Mina TimeServer,启动服务端,接着在命令行运行“telnet 127.0.0.1 9123”.

 

5.客户端开发示例
首先定义类TimeClientHandler来处理消息接收事件:

class TimeClientHandler extends IoHandlerAdapter{ 
public TimeClientHandler() { 
} 
@Override 
public void messageReceived(IoSession session, Object message) throws Exception { 
System.out.println(message);//显示接收到的消息 
} 
} 

 

   接着定义Mina TimeClient类用于连接服务端,并向服务端发送消息:

 

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 框架 来提高我们的开发效率和应用程序的执行效率。

分享到:
评论

相关推荐

    mina框架demo

    使用MINA框架来开发的网络应用程序代码结构更清晰;MINA框架完成了底层的线程管理;MINA内置的编码器可以满足大多数用户的需求,省去了开发人员消息编码解码的工作。

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

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

    JAVA 通信框架MINA(包含心跳)

    Apache MINA 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部...Apache MINA 可以作为开发网络应用程序的一个良好基础。

    mina2框架+项目实例教程

    一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议(如TCP/IP,UDP/IP协议等)下快速高效开发。 Apache Mina也称为:  NIO...

    MINA框架源码

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便 apache mina apache mina 利的框架。当前发行的 MINA ...

    mina开发示例

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...

    apache下的mina框架

    可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式,是一个开发高性能和高可伸缩性网络应用程序的网络应用框架

    MINA NIO 高性能异步并发网络通讯框架

    利用 Mina 可以高效地完成以下任务: <br>TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯... 不过不管怎样,如果你在使用 Java 进行并发网络应用开发, Mina 绝对是一个值得推荐和学习的优秀工具!

    Apache MINA开发相关jar包

    Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。 apache-mina-2.0.7-bin.zip,apache-mina-2.0.7-src.zip,log4j-1.2.17.zip,slf4j-api-1.6.6.jar,slf4j-api-1.6.6-...

    mina高性能Java网络框架.rar

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...

    基于.NET的轻量级高性能网络程序框架Mina.NET设计源码

    本资源提供了一套基于.NET的轻量...这些文件详细展示了如何使用C#构建一个支持TCP、UDP和串口等多种传输通道的网络程序框架,该框架能够帮助开发者快速地开发高伸缩性的应用程序,非常适合用于学习和参考C#项目的开发。

    MINA通讯框架的两个简单实例和文档

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...

    Mina状态机介绍和实例

    MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架。通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入...

    mina高性能Java网络框架-其他

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

    apache下的mina框架的源码

    可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式,是一个开发高性能和高可伸缩性网络应用程序的网络应用框架的源码.

    26 Mina视频教程

    教程视频:Apache Mina Server 是一个网络通信应用框架,为开发高性能和高可用性的网络应用程序提供了非常便利的框架

    mina 框架demo

    ApacheMINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API

    mina2.0初学教程

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...

    mina源代码java demo(亲测可用)

    Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。 上传自己修改的demo,java版...

Global site tag (gtag.js) - Google Analytics