已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Apache MINA和Spring MVC集成1. 创建项目创建一个Spring MVC的WEB应用项目,导入Spring MVC相关的jar包。另外还需要导入支持Spring面向切面编程的几个包,如下:aopalliance.jaraspectjweaver-1.6.12.jarognl-3.0.6.jar两个日志相关的包,如下:slf4j-api-1.6.6.jarslf4j-jdk14-1.6.6.jar另外导入MINA的包,如下:mina-core-2.0.7.jarmina-integration-beans-2.0.7.jar2. 配置1) 配置web.xml其实就是Spring MVC的相关配置。 Spring MVC的配置SpringMVCorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:applicationContext.xml,classpath:spring-servlet.xml1SpringMVC*.htm index.jsp 2) 配置spring-servlet.xml也是很普通宾配置项。3) 配置applicationContext.xml这里只保留了MINA需要的几个bean的配置。上面标蓝色底的那段,是配置的自已开发的MINA处理客户端请求的服务器端程序。下面标蓝色底的配置指明,本服务器端程序起动后的服务器端的端口是1235。3. 程序实现1) 服务器端程序MinaProtocolHandler.javapackage com.memo.frame.mina;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class MinaProtocolHandler extends IoHandlerAdapter private final Logger logger = LoggerFactory.getLogger(getClass();/private final Set sessions = Collections.synchronizedSet(new HashSet();public void messageReceived(IoSession session, Object message) String msg = (String) message;System.out.println(Server Received: + msg);session.write(Server Send: + msg);/sessions.add(session);public void sessionIdle(IoSession session, IdleStatus status) /disconnect an idle clientsession.close();/ public void sessionClosed(IoSession session) throws Exception / sessions.remove(session);/ public void exceptionCaught(IoSession session, Throwable cause) logger.warn(Unexpected exception., cause);session.close();2) 客户端程序下面是二个测试用的客户端程序:1、 MinaClientHandler.java这个Client端设置的handler程序,是用于接收服务端回复过来的信息用的。package com.memo.frame.mina;import org.apache.mina.core.filterchain.IoFilter;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.filter.logging.LoggingFilter;public class MinaClientHandler extends IoHandlerAdapter private static final IoFilter LOGGING_FILTER = new LoggingFilter();private static final IoFilter CODEC_FILTER = new ProtocolCodecFilter(new TextLineCodecFactory();Overridepublic void sessionCreated(IoSession session) throws Exception session.getFilterChain().addLast(codec, CODEC_FILTER);session.getFilterChain().addLast(logger, LOGGING_FILTER);Overridepublic void messageReceived(IoSession session, Object message)throws Exception String msg = (String) message;System.out.println(Client Received: + msg);2、MinaClientSupport.java这个客户端的主应用程序,负责发送客户端的请求到服务器端。package com.memo.frame.mina;import .InetSocketAddress;import .SocketAddress;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.core.service.IoHandler;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.logging.MdcInjectionFilter;import org.apache.mina.transport.socket.nio.NioSocketConnector;public class MinaClientSupport private IoHandler handler = null;private IoSession session;private String host;private int port;public boolean send(Object message) if (session != null & session.isConnected() throw new IllegalStateException(Already connected. Disconnect first.);SocketAddress address = new InetSocketAddress(host, port);NioSocketConnector connector = new NioSocketConnector();try connector.getFilterChain().addLast(mdc, new MdcInjectionFilter();connector.setHandler(handler);ConnectFuture future1 = connector.connect(address);future1.awaitUninterruptibly();if (!future1.isConnected() return false;session = future1.getSession();session.write(message);return true; catch (Exception e) return false;public void close() if (session != null) if (session.isConnected() / Wait until the chat ends.session.getCloseFuture().awaitUninterruptibly();session.close();public String getHost() return host;public void setHost(String host) this.host = host;public int getPort() return port;public void setPort(int port) this.port = port;public void setHandler(IoHandler handler) this.handler = handler;public static void main(String args) System.out.println(-);MinaClientSupport client = new MinaClientSupport();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/GDSGX 002-2024夏季种鸽繁殖期主要营养素需要量
- T/CASME 2158-2026隧道逃生管
- DB32/T 5236-2025粮食生产“无人化农场”建设规范
- 2026基于触觉感知的涤麻弹力提花面料表面纹理与消费者情绪价值关联度测评报告
- 光伏项目可行性研究报告编制要点手册
- (新)医院感染暴发演练评价报告(2篇)
- 26年山东省临沂市临沂第一中学期末学业水平质量调研数学试卷【附答案】
- 2026年秋招:复星公司试题及答案
- 2026年秋招:东南网架集团笔试题及答案
- 2026年秋招:得力集团面试题及答案
- 广安枣园投资开发集团有限公司 2026年公开招聘工作人员笔试备考试题及答案详解
- 光大证券2027届校园招聘笔试备考题库及答案详解
- 安全用电 课件 绪论
- 2026年“全国质量月”相关质量知识竞赛试题及答案
- 2026年中职市场营销(市场营销基础知识)试题及答案
- DBJ∕T 15-120-2017 城市轨道交通既有结构保护技术规范
- 《陆上风电场工程概算定额》NBT 31010-2019
- 一般纳税人企业税费缴纳测算及成本倒轧测算表
- 机械展会报告
- 2024年四川广安鑫鸿集团有限公司招聘笔试参考题库含答案解析
- GB/T 18329.2-2023滑动轴承多层金属滑动轴承第2部分:合金厚度≥2 mm的结合强度破坏性试验
评论
0/150
提交评论