快速开发mina(翻译)
本文的源地址为: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.jar 和 log4j-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(翻译)相关推荐
- Oracle WebCenter 11g 快速开发指南--翻译(一)
第一章:开发者快速开发指南 作为一个开发者,如果你准备建立一个WebCenter Portal application ,你需要一个好的路线图,来指导你从什么地方开始,提供初始化的经验:本章首先解决开 ...
- Oracle WebCenter 11g 快速开发指南--翻译(二)
1.2 需求软件安装 典型的开发环境包括以下组件: JDeveloper – 请参考 3.1 "Installing Oracle JDeveloper." WebCenter E ...
- 快速 开发平台 架构_快速介绍清洁架构
快速 开发平台 架构 by Daniel Deutsch 由Daniel Deutsch 快速介绍清洁架构 (A quick introduction to clean architecture) I ...
- eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...
人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...
- SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework
5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为"高级查询",事件上写下如下代码: 如果是单表查询的话,只需要传Gr ...
- 什么时候需要使用cqrs_在CQRS读取模型中使用Hibernate进行快速开发
什么时候需要使用cqrs 在本文中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要Hibernate? Hibernate非常流行. 从外观上看,它也很容易, ...
- 使用Hibernate在CQRS读取模型中进行快速开发
在这篇文章中,我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧. 为什么要休眠? 休眠非常流行. 从外观上看,它也很容易,而从内部看,它却相当复杂. 它可以很容易地开始使用 ...
- JAVA企业级快速开发平台,JEECG 3.7.3 新春版本发布
JEECG 3.7.3新春版本发布 - 微云快速开发平台 导读 ⊙ 精美Echart报表 ⊙二维码生成功能 ⊙Online接口改造采用JWT机制 ⊙智能菜单搜索 ⊙代码生成器模 ...
- 【“互联网+”大赛华为云赛道】CloudIDE命题攻略:明确业务场景,快速开发插件
摘要:基于华为云CloudIDE和插件开发框架自行设计并开发插件. IDE是每个开发人员必备的生产工具,一款好的IDE + 插件的组合,除了帮助开发者把编写代码.组织项目.编译运行放在一个环境中外,还 ...
最新文章
- cnblog博客CSS定制
- oracle Data Modeler 使用教程
- zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...
- linux coreutils升级,Coreutils
- 案例 月工作列表 c# 1614099857
- linux是否安装java环境,linux是否安装java环境
- python什么是堆什么是栈_python中堆和栈_Python小知识00002
- (轉貼) C Standard Library (初級) (C/C++)
- 190609每日一句,科比·布莱恩特:这就是我成功的原因,即使身陷低谷,也要抬头仰望星空
- SQL必知必会【极客时间笔记】
- 【源码】基于部分随机PSO的光伏MPPT算法
- DMS经销商管理系统解决方案
- 腾讯QQ2019最新版 v9.1.0(24712) 免安装绿色版 显IP去广告完整版
- 一个小实验告诉你,内存速度到底比硬盘快多少!!!
- 小程序商城制作一个需要多少钱?
- 1 Openwrt无线中继设置并访问外网
- 404 网站服务器错误怎么解决,网站404错误页面是什么意思,它有什么用?
- 连接mysql报错Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zon
- 官方:最好的版本!Python 3.11正式版来了!
- [OPNET]license expired的处理
热门文章
- java icomparer_集合数据处理(C#、JavaScript 和 Java)
- 文本编辑器添加文本编辑区
- 怎么测并发 PHP,PHP接口并发测试的方法(推荐)
- linux raid更换硬盘,linux系统raid1更换故障硬盘处理过程
- java 两个等长数组的中位数_查询两个数组的中位数
- android ripple 大小,Android Ripple 旋钮水波纹效果(一)
- word2vector 讲的比较好的文章
- tensorflow max_pooling
- 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
- 整数的二进制表达中有多少个1