本文的源地址为:http://mina.apache.org/mina-project/quick-start-guide.html

本文带你进入如何建立一个基于mina程序的全过程。本文将带领你建立一个时间服务器。

准备工作:

  • MINA 2.0.7 Core
  • JDK 1.5 或者以上版本
  • SLF4 1.3.0 或者以上版本(|http://www.slf4j.org/])
    • Log4J 1.2 版本: slf4j-api.jar, slf4j-log4j12.jar, 和Log4J 1.2.x
    • Log4J 1.3 版本: slf4j-api.jar, slf4j-log4j13.jar, and Log4J 1.3.x
    • java.util.logging 版本: slf4j-api.jar and slf4j-jdk14.jar
    • 注意 : 请确认你使用的 slf4j-*.jar 版本是和你的日志框架版本是相符合的. 例如, slf4j-log4j12.jarlog4j-1.3.x.jar 不能混合到一起使用, 如果这样使用可能会产生问题

第一步:建立时间服务器:

MinaTimeServer {public static void main(String[] args) {// code will go here next
    }
}

第二步:建立接收connection程序SocketAcceptor

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class MinaTimeServer
{public static void main( String[] args ){
        IoAcceptor acceptor = new NioSocketAcceptor();}
}

第三步:定义处理类,并绑定NioSocketAcceptor到指定端口

import java.nio.charset.Charset;import org.apache.mina.core.service.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
{public static void main( String[] args ){IoAcceptor acceptor = new NioSocketAcceptor();        acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));}
}

第四步:增加处理类

import java.io.IOException;
import java.nio.charset.Charset;import org.apache.mina.core.service.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
{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() );}
}

第五步:增加 NioSocketAcceptor配置

import java.io.IOException;
import java.nio.charset.Charset;import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.service.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
{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 );}
}

第六步:处理类,继承自IoHandlerAdapter

import java.util.Date;import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;public class TimeServerHandler extends IoHandlerAdapter
{@Overridepublic void exceptionCaught( IoSession session, Throwable cause ) throws Exception{cause.printStackTrace();}@Overridepublic 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...");}@Overridepublic void sessionIdle( IoSession session, IdleStatus status ) throws Exception{System.out.println( "IDLE " + session.getIdleCount( status ));}
}

第七步:定义时间服务器要监听的地址。

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;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) );}
}

转载于:https://www.cnblogs.com/davidwang456/archive/2013/04/04/2999229.html

快速开发mina(翻译)相关推荐

  1. Oracle WebCenter 11g 快速开发指南--翻译(一)

    第一章:开发者快速开发指南 作为一个开发者,如果你准备建立一个WebCenter Portal application ,你需要一个好的路线图,来指导你从什么地方开始,提供初始化的经验:本章首先解决开 ...

  2. Oracle WebCenter 11g 快速开发指南--翻译(二)

    1.2 需求软件安装 典型的开发环境包括以下组件: JDeveloper – 请参考 3.1 "Installing Oracle JDeveloper." WebCenter E ...

  3. 快速 开发平台 架构_快速介绍清洁架构

    快速 开发平台 架构 by Daniel Deutsch 由Daniel Deutsch 快速介绍清洁架构 (A quick introduction to clean architecture) I ...

  4. eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...

    人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...

  5. SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为"高级查询",事件上写下如下代码: 如果是单表查询的话,只需要传Gr ...

  6. 什么时候需要使用cqrs_在CQRS读取模型中使用Hibernate进行快速开发

    什么时候需要使用cqrs 在本文中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要Hibernate? Hibernate非常流行. 从外观上看,它也很容易, ...

  7. 使用Hibernate在CQRS读取模型中进行快速开发

    在这篇文章中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要休眠? 休眠非常流行. 从外观上看,它也很容易,而从内部看,它却相当复杂. 它可以很容易地开始使用 ...

  8. JAVA企业级快速开发平台,JEECG 3.7.3 新春版本发布

    JEECG 3.7.3新春版本发布 -  微云快速开发平台 导读            ⊙ 精美Echart报表 ⊙二维码生成功能 ⊙Online接口改造采用JWT机制 ⊙智能菜单搜索 ⊙代码生成器模 ...

  9. 【“互联网+”大赛华为云赛道】CloudIDE命题攻略:明确业务场景,快速开发插件

    摘要:基于华为云CloudIDE和插件开发框架自行设计并开发插件. IDE是每个开发人员必备的生产工具,一款好的IDE + 插件的组合,除了帮助开发者把编写代码.组织项目.编译运行放在一个环境中外,还 ...

最新文章

  1. cnblog博客CSS定制
  2. oracle Data Modeler 使用教程
  3. zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...
  4. linux coreutils升级,Coreutils
  5. 案例 月工作列表 c# 1614099857
  6. linux是否安装java环境,linux是否安装java环境
  7. python什么是堆什么是栈_python中堆和栈_Python小知识00002
  8. (轉貼) C Standard Library (初級) (C/C++)
  9. 190609每日一句,科比·布莱恩特:这就是我成功的原因,即使身陷低谷,也要抬头仰望星空
  10. SQL必知必会【极客时间笔记】
  11. 【源码】基于部分随机PSO的光伏MPPT算法
  12. DMS经销商管理系统解决方案
  13. 腾讯QQ2019最新版 v9.1.0(24712) 免安装绿色版 显IP去广告完整版
  14. 一个小实验告诉你,内存速度到底比硬盘快多少!!!
  15. 小程序商城制作一个需要多少钱?
  16. 1 Openwrt无线中继设置并访问外网
  17. 404 网站服务器错误怎么解决,网站404错误页面是什么意思,它有什么用?
  18. 连接mysql报错Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zon
  19. 官方:最好的版本!Python 3.11正式版来了!
  20. [OPNET]license expired的处理

热门文章

  1. java icomparer_集合数据处理(C#、JavaScript 和 Java)
  2. 文本编辑器添加文本编辑区
  3. 怎么测并发 PHP,PHP接口并发测试的方法(推荐)
  4. linux raid更换硬盘,linux系统raid1更换故障硬盘处理过程
  5. java 两个等长数组的中位数_查询两个数组的中位数
  6. android ripple 大小,Android Ripple 旋钮水波纹效果(一)
  7. word2vector 讲的比较好的文章
  8. tensorflow max_pooling
  9. 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
  10. 整数的二进制表达中有多少个1