`
zone8089653
  • 浏览: 11808 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Mina框架

    博客分类:
  • Mina
阅读更多

MINA是一个Socket的网络框架,但是它提供了方便的Protocol支持,通过它的Encoder和Decoder,你将你的应用可以方便的扩展并支持各种基于Socket的网络协议,比如HTTP服务器、FTP服务器(当然,这很复杂)、Telnet服务器等等。基于MINA用户可以容易地开发高性能和高伸缩性的网络应用程序。

1。介绍

Apache MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。它通过Java NIO提供了一个抽象的、事件驱动的、异步的位于各种传输协议(如TCP/IP和UDP/IP)之上的API,

Apache MINA 通常可被称之为:

NIO 框架库;
客户端/服务器框架库;
或者一个网络socket库。

然而,它所提供的功能远不止这些。

如期官方文档的介绍,Apache MINA 是一个网络应用程序框架,它对Java中的socket和NIO进行了有效和清晰的封装,方便开发人员开发TCP/UDP程序,从而抛开在使用原始的socket时需要考虑的各种繁杂而又烦人问题(线程、性能、会话等),把更多精力专著在应用中的业务逻辑的开发上。

Apache MINA 有两个主要版本:2.0 和 1.1,2.0与1.1有较大的区别,其采用java NIO进行开发,使得性能得到有效的提升,在接口方面也有不小的变化,具体信息可以参见其网站说明。

下面的介绍以 Apache MINA 2.0 为例。

2。软件准备

要编写和运行一个基于Apache MINA 2.0的程序,需要JDK 5.0以上版本,还需要以下软件:

(1)MINA 2.x Core

下载地址:http://mina.apache.org/downloads.html

(2)SLF4J 1.3.0 or greater

下载地址:http://www.slf4j.org/download.html

这里需要用到两个 SLF4J 的jar包:slf4j-api.jar 和 slf4j-jdk14.jar。

分别解压下载的MINA 2.x Core 和SLF4J文件,找出下列jar包文件:

mina-core-2.0.0-M1.jar
slf4j-api.jar
slf4j-jdk14.jar

3。编写一个Apache MINA 时间服务器

该程序的功能非常简单,就是当客户端连接到服务器的9123端口后,程序将服务器当前的时间信息以字符串的形式发送给客户端。

我们可以用Eclipse来创建编写这个程序。

(1)在Eclipse中创建一个Java项目,例如 TimeServerProject,然后将mina-core-2.0.0-M1.jar、slf4j-api.jar 和 slf4j-jdk14.jar这三个文件添加到项目的Libraries中。

(2)创建一个 MinaTimeServer 类,其内容为:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

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.getSessionConfig().setReadBufferSize(2048);
   acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
   acceptor.bind(new InetSocketAddress(PORT));
}
}

(3)创建一个 TimeServerHandler 类,其内容为:

import java.util.Date;

import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;

public class TimeServerHandler extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session, Throwable cause)
    throws Exception {
   cause.printStackTrace();
}

@Override
public void messageReceived(IoSession session, Object message)
    throws Exception {
   String str = message.toString();
   System.out.println("Message read:");
   System.out.println(str);

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

@Override
public void sessionIdle(IoSession session, IdleStatus status)
    throws Exception {
   System.out.println("IDLE " + session.getIdleCount(status));
}
}

(4)编译并运行MinaTimeServer类

(5)打开您的浏览器,在地址栏中输入 http://127.0.0.1:9123/,然后回车,你就可以看到服务器的时间显示在您的浏览器内了。同时您也可以在运行MinaTimeServer的控制台窗口中看到类似下面的信息:

Message read:2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: CREATED
2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: OPENED
2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: RECEIVED: HeapBuffer[pos=0 lim=261 cap=2048: 47 45 54 20 2F 20 48 54 54 50 2F 31 2E 31 0D 0A...]

GET / HTTP/1.1
Message written...
Message read:
Accept: */*
Message written...
Message read:
Accept-Language: zh-cn,en-US;q=0.5
Message written...
Message read:
UA-CPU: x86
Message written...
Message read:
Accept-Encoding: gzip, deflate
Message written...
Message read:
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Message written...
Message read:
Host: 127.0.0.1:9123
Message written...
Message read:
Connection: Keep-Alive
Message written...
Message read:

Message written...
2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: SENT: HeapBuffer[pos=0 lim=29 cap=30: 46 72 69 20 41 70 72 20 31 31 20 31 32 3A 32 32...]
2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]
2008-4-11 12:22:44 org.apache.mina.filter.logging.LogLevel$4 log
信息: CLOSED

这是程序的日志信息以及,浏览器发送过来请求的HTTP头信息。

(6)或者也可以通过telnet连接服务器的9123端口,连敲两次回车,就可以看到服务器发送过来的时间信息了。

 

 

待续。。。。。

分享到:
评论
1 楼 sunjunliangsunjun 2012-06-19  
好东西!   好东西

相关推荐

    Mina框架+常用JAR包

    Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包

    mina 框架学习文档

    apache mina 框架的学习文档,通过此文档可以基本了解mina框架。

    java mina框架全套

    java mina框架

    apache mina 框架实例

    apache mina 框架 实例 自定义协议包 自定义编码器 解码器 服务端 客户端

    Apache mina框架入门教程

    该文档较好的介绍了,apache mina框架的使用方法。

    mina框架的demo 入门,开发

    mina框架的demo 入门,开发 学习

    mina框架资源包

    要实现mina框架最基本的资源包,拥有这个就可以实现mina的通讯

    Android Mina框架使用

    Android端集成Mina框架实现长连接,完美解决断线重连问题,修复断线重连打开多端口问题。

    mina框架源码及jar包

    apache-mina-2.0.4 mina框架的源码及jar包

    Mina框架入门介绍

    pache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性...

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

    Java_NIO基础教程、MINA教程, 并附上基于springboot 整合mina的基础平台框架,可以直接使用,也可以借鉴下

    mina框架demo

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

    mina框架jar

    这是学习mina框架所需要的jar包以前日志jar包

    Mina 框架研究与实现

    Mina框架研究与实现 Mina框架研究与实现

    mina框架使用总结

    nio的经典框架mina 在此基础上发展的netty是nio经典之中的经典

    apache下的mina框架

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

    基于Java的mina框架

    基于Java的米娜框架,报告对使用基于Java、websocket协议的网页聊天室的过程和技术做了详细的叙述首先,对现有网页进行了分析与评价。首先, 启动后台服务器,然后连接站点,客户端在pc端输入网站或者在手机端扫...

    MiNA框架新人指导

    在资金线混有两个技术框架是一定要懂得如何使用的,它们就是MINA和HTTPCLIENT(迓没听过的,就先百度一下) 。支付宝和银行前置机乊间的通讯基本都是使用者两种框架,即使你丌懂SOCKET戒者HTTP很底层的协议也没多大...

    Apache MINA框架相关资料

    包括中文参考手册,mina2的源码分析,api文档,MINA和spring结合等相关资料

    JAVA mina 框架源码

    JAVA mina 框架源码,非常好。。。。。。。。。

Global site tag (gtag.js) - Google Analytics