一、applicationContent.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="myHandler" class="com.nfhn.mina.ServerHandle"></bean><bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter"></bean><bean id="codecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter"> <constructor-arg> <!-- <bean class="org.apache.mina.filter.codec.textline.TextLineCodecFactory" /> --><bean class="com.nfhn.mina.ServerCodeFactory"></bean> </constructor-arg> </bean> <bean id="filterChainBuilder" class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder"><property name="filters"><map><entry key="loggingFilter" value-ref="loggingFilter"/><entry key="codecFilter" value-ref="codecFilter"/> </map></property></bean><bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioDatagramAcceptor" init-method="bind" destroy-method="unbind">  <property name="defaultLocalAddress" value=":8888" />  <property name="handler" ref="myHandler" />  <property name="filterChainBuilder" ref="filterChainBuilder" />  </bean>  <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"><property name="customEditors"><map><entry key="java.net.SocketAddress"><bean class="org.apache.mina.integration.spring.InetSocketAddressEditor" /></entry></map></property></bean> </beans>

二、业务处理类:

package com.nfhn.mina;import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;import com.nfhn.dto.TestDTO;
import com.nfhn.service.TestService;
import com.nfhn.util.XMLParser;public class ServerHandle extends IoHandlerAdapter {private static Logger log = LoggerFactory.getLogger(ServerHandle.class);@Autowiredprivate TestService testService;@Overridepublic void messageReceived(IoSession session, Object message) throws Exception {try {String msg = (String)message;log.info("mina recieve message: " + msg);TestDTO dto = (TestDTO)XMLParser.unmarshal(msg, TestDTO.class);log.info(dto.toString());testService.insert(dto);session.write(System.currentTimeMillis());} catch(Exception e) {e.printStackTrace();throw e;}}@Overridepublic void exceptionCaught(IoSession session, Throwable cause)throws Exception {System.out.println("error");super.exceptionCaught(session, cause);}}

三、客户端:

package com.nfhn.action;import java.net.InetSocketAddress;
import java.nio.charset.Charset;import org.apache.log4j.Logger;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.future.IoFutureListener;
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;
import org.apache.mina.transport.socket.DatagramConnector;
import org.apache.mina.transport.socket.nio.NioDatagramConnector;import com.nfhn.dto.TestDTO;
import com.nfhn.util.XMLParser;public class ClientNIO extends IoHandlerAdapter{private static Logger log = Logger.getLogger(ClientNIO.class);private DatagramConnector connector;private IoSession session;private String hostname = "127.0.0.1";private int port = 8888;public ClientNIO() {inti();}private void inti() {log.info("client");connector = new NioDatagramConnector();connector.setHandler(this);DefaultIoFilterChainBuilder chain = connector.getFilterChain();chain.addLast("logger", new LoggingFilter());chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));IoFuture connFuture = connector.connect(new InetSocketAddress(hostname, port));connFuture.addListener(new IoFutureListener() {public void operationComplete(IoFuture future) {ConnectFuture connFuture = (ConnectFuture) future;if (connFuture.isConnected()) {session = future.getSession();try {sendData();} catch (InterruptedException e) {e.printStackTrace();}} else {log.error("Not connected...exiting");}}});}private void sendData() throws InterruptedException {TestDTO dto = new TestDTO();dto.setMessage("nfhn");dto.setTimes(String.valueOf(System.currentTimeMillis()));String str = XMLParser.marshal(dto, TestDTO.class);session.write(str);}@Overridepublic void messageReceived(IoSession session, Object message)throws Exception {log.info("client recieve message: " + message.toString());Thread.sleep(10000);sendData();}public static void main(String[] args) {new ClientNIO();}}

四、依赖包:

<mina.version>2.0.0-M2</mina.version><mina.spring.version>1.1.7</mina.spring.version>
<dependency> <groupId>org.apache.mina</groupId><artifactId>mina-core</artifactId><version>${mina.version}</version></dependency><dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-integration-spring</artifactId> <version>${mina.spring.version}</version> </dependency> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-integration-beans</artifactId> <version>${mina.version}</version></dependency>  

spring 集成 mina入门相关推荐

  1. spring集成mina 实现消息推送以及转发

    spring集成mina: 在学习mina这块时,在网上找了很多资料,只有一些demo,只能实现客户端向服务端发送消息.建立长连接之类.但是实际上在项目中,并不简单实现这些,还有业务逻辑之类的处理以及 ...

  2. spring集成mina,包含心跳检测,实现服务端主动推送

    服务端 1.常规的spring工程集成mina时,pom.xml中需要加入如下配置: <dependency><groupId>org.slf4j</groupId> ...

  3. Spring集成JMS入门

    1.预备知识 在学习Spring集成JMS之前最好可以是先去了解JMS基本概念和ActiveMQ 自己学习Spring整合JMS的一些心得,希望可以帮到大家 2.Spring整合JMS 2.1.使用点 ...

  4. Hessian入门(与Spring集成)

    2019独角兽企业重金招聘Python工程师标准>>> Hessian入门(与Spring集成) By:wtang 说明 : 1.    讲述如何配置Hessian的服务器端(与Sp ...

  5. java mina spring_Mina入门教程(二)----Spring4 集成Mina

    在spring和mina集成的时候,要十分注意一个问题:版本. 这是一个非常严重的问题,mina官网的demo没错,网上很多网友总结的代码也是对的,但是很多人将mina集成到spring中的时候,总是 ...

  6. 函数集成redis与Spring集成

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 redis与Spring集成比较简单,本文不触及Spring的一些基本概念,读都需先具有Spring的相干知识. 先在maven中添 ...

  7. jersey spring_实施Jersey 2 Spring集成

    jersey spring Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API ...

  8. 实施Jersey 2 Spring集成

    Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API作为我们的REST框架和Sp ...

  9. Spring Data Solr入门

    Spring Data Solr是Spring Data项目的扩展,该项目旨在简化Apache Solr在Spring应用程序中的使用. 请注意,这不是Spring(数据)或Solr的简介. 我认为您 ...

最新文章

  1. 中国电子学会图形化四级编程题:加减法混合运算器
  2. Linux常用的基本命令02
  3. TOMCAT startup.bat
  4. Python入门学习之异常处理机制
  5. C语言链表返回第n个到最后的节点的算法(附完整源码)
  6. DNS的一些实际应用(一)
  7. 【Leetcode】【Easy】Implement strStr()
  8. [html] 使用div+css进行布局有什么好处?
  9. 使用客户端对象模型读取SharePoint列表数据
  10. Advanced techniques: creating sound, sequencing, timing, scheduling
  11. linux vi-vim编辑器快捷键
  12. 2021-06-29初识JQuery
  13. FPGA零基础学习:数字电路中的数字表示
  14. 工行u盾显示316_工行手机银行u盾签名失败或未完成(310)是为什么?
  15. pat乙级1083C语言
  16. 扫雷外挂的设计与实现
  17. 库克将为斯坦福大学2019年毕业典礼致辞:6月16日举行
  18. 谈 Scratch 版“植物大战僵尸”
  19. 會懷孕的木乃伊~恐怖!! 使木乃伊懷孕的人~更加恐怖!
  20. 电容-贴片陶瓷电容的NPO、C0G、X7R、X5R、Y5V、Z5U

热门文章

  1. 【精选】色谱柱L分类保存与使用注意事项
  2. Micro Focus-QA实习生面试
  3. 通过USB接口与EFM8微控制器进行通信
  4. 蚂蚁管网参数化三维建模数据规格V1.0
  5. Python游戏开发-04-键盘方向键控制精灵移动和翻转(基于Python游戏开发-01)
  6. linux配置网络详解
  7. 你好2018▪再见2017
  8. 中文计算机期刊影响因子排名,中国大陆中文期刊影响因子总排名.pdf
  9. Python开发 LTE频点/频率换算工具V0.1
  10. 虚拟工作手机是什么?有什么功能?