apache Mina使用小记

apache mina使用小记 简介     Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。 环境为jdk1.6+freebsd9(64bit)+apache-mina-2.0.7+vim 首先是环境变量的配置

setenv JAVA_HOME "/usr/local/diablo-jdk1.6.0/"
setenv JAVA_BIN "/usr/local/bin/"

下载mina

cd /usr/home/evoup/monsrvd-2.1/test/
fetch http://mirror.bjtu.edu.cn/apache/mina/mina/2.0.7/dist/apache-mina-2.0.7-bin.tar.gz
tar xzf apache-mina-2.0.7-bin.tar.gz
cp apache-mina-2.0.7/dist/mina-core-2.0.7.jar .
cp apache-mina-2.0.7/lib/slf4j-api-1.6.6.jar .

除此之外还需要slf4j这个是mina需要使用的日志库

fetch http://www.slf4j.org/dist/slf4j-1.7.2.tar.gz
tar xzf slf4j-1.7.2.tar.gz
cp slf4j-1.7.2/slf4j-api-1.7.2.jar .
cp slf4j-1.7.2/slf4j-nop-1.7.2.jar .

设置好JAVA的CLASSPATH

setenv CLASSPATH "/usr/home/evoup/project/management/monsrvd-2.1/test/slf4j-api-1.7.2.jar:/usr/home/evoup/project/management/monsrvd-2.1/test/slf4j-nop-1.7.2.jar:/usr/home/evoup/project/management/monsrvd-2.1/test/mina-core-2.0.7.jar:/usr/local/diablo-jdk1.6.0/lib:."

找到mina的TimeServer的例子 http://mina.apache.org/mina-project/userguide/ch2-basics/sample-tcp-server.html 代码最后是这个样子,先不用管细节

Java语言
import  java.io.IOException;
import  java.net.InetSocketAddress;
import  java.nio.charset.Charset;
import  org.apache.mina.core.service.IoAcceptor;
import  org.apache.mina.core.session.IdleStatus;
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;

import  org.apache.mina.core.service.IoHandlerAdapter;
import  org.apache.mina.core.session.IoSession;
import  java.util.Date;
import  org.slf4j.LoggerFactory;
import  org.slf4j.Logger;

public  class  MinaTimeServer
{
    private  static  final  int  PORT  =  9123;

    public  static  void  mainString []  args )  throws  IOException
    {
        IoAcceptor  acceptor  =  new  NioSocketAcceptor();

        acceptor . getFilterChain (). addLast"logger" ,  new  LoggingFilter() );
        acceptor . getFilterChain (). addLast"codec" ,  new  ProtocolCodecFilternew TextLineCodecFactoryCharset . forName"UTF-8" ))));

        acceptor . setHandlernew  TimeServerHandler() );
        acceptor . getSessionConfig (). setReadBufferSize2048 );
        acceptor . getSessionConfig (). setIdleTimeIdleStatus . BOTH_IDLE ,  10 );
        acceptor . bindnew  InetSocketAddress( PORT) );
    }
}

class  TimeServerHandler  extends  IoHandlerAdapter  {
     static  Logger  logger  =  LoggerFactory . getLogger( TimeServerHandler . class);
    //static Logger logger = Logger.getLogger(TimeServerHandler.class);
    //异常处理
    public  void  exceptionCaught( IoSession  session ,  Throwable  causethrows  Exception  {
        cause . printStackTrace();
    }
    //对接收到的数据进行业务处理,在这里我们不管收到什么信息都返回一个当前的日期
    public  void  messageReceived( IoSession  session ,  Object  messagethrows  Exception  {
        String  str  =  message . toString();
        if ( str . trim (). equalsIgnoreCase( "quit"))  {
            session . close( true);
            return;
        }
        logger . debug( "Rec:"  +  str);
        Date  date  =  new  Date();
        session . write( date . toString());
        logger . debug( "Message written...");
    }
    //当连接空闲时的处理
    public  void  sessionIdle( IoSession  session ,  IdleStatus  statusthrows  Exception  {
        logger . debug( "IDLE "  +  session . getIdleCount( status));
    }
}
[evoup@myhost]>telnet 127.0.0.1 9123
Trying 127.0.0.1...
Connected to localhost.

Escape character is '^]'.
Mon Jan 14 17:34:04 CST 2013
Mon Jan 14 17:34:04 CST 2013
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值