spring 集成 mina入门
一、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入门相关推荐
- spring集成mina 实现消息推送以及转发
spring集成mina: 在学习mina这块时,在网上找了很多资料,只有一些demo,只能实现客户端向服务端发送消息.建立长连接之类.但是实际上在项目中,并不简单实现这些,还有业务逻辑之类的处理以及 ...
- spring集成mina,包含心跳检测,实现服务端主动推送
服务端 1.常规的spring工程集成mina时,pom.xml中需要加入如下配置: <dependency><groupId>org.slf4j</groupId> ...
- Spring集成JMS入门
1.预备知识 在学习Spring集成JMS之前最好可以是先去了解JMS基本概念和ActiveMQ 自己学习Spring整合JMS的一些心得,希望可以帮到大家 2.Spring整合JMS 2.1.使用点 ...
- Hessian入门(与Spring集成)
2019独角兽企业重金招聘Python工程师标准>>> Hessian入门(与Spring集成) By:wtang 说明 : 1. 讲述如何配置Hessian的服务器端(与Sp ...
- java mina spring_Mina入门教程(二)----Spring4 集成Mina
在spring和mina集成的时候,要十分注意一个问题:版本. 这是一个非常严重的问题,mina官网的demo没错,网上很多网友总结的代码也是对的,但是很多人将mina集成到spring中的时候,总是 ...
- 函数集成redis与Spring集成
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 redis与Spring集成比较简单,本文不触及Spring的一些基本概念,读都需先具有Spring的相干知识. 先在maven中添 ...
- jersey spring_实施Jersey 2 Spring集成
jersey spring Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API ...
- 实施Jersey 2 Spring集成
Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API作为我们的REST框架和Sp ...
- Spring Data Solr入门
Spring Data Solr是Spring Data项目的扩展,该项目旨在简化Apache Solr在Spring应用程序中的使用. 请注意,这不是Spring(数据)或Solr的简介. 我认为您 ...
最新文章
- 中国电子学会图形化四级编程题:加减法混合运算器
- Linux常用的基本命令02
- TOMCAT startup.bat
- Python入门学习之异常处理机制
- C语言链表返回第n个到最后的节点的算法(附完整源码)
- DNS的一些实际应用(一)
- 【Leetcode】【Easy】Implement strStr()
- [html] 使用div+css进行布局有什么好处?
- 使用客户端对象模型读取SharePoint列表数据
- Advanced techniques: creating sound, sequencing, timing, scheduling
- linux vi-vim编辑器快捷键
- 2021-06-29初识JQuery
- FPGA零基础学习:数字电路中的数字表示
- 工行u盾显示316_工行手机银行u盾签名失败或未完成(310)是为什么?
- pat乙级1083C语言
- 扫雷外挂的设计与实现
- 库克将为斯坦福大学2019年毕业典礼致辞:6月16日举行
- 谈 Scratch 版“植物大战僵尸”
- 會懷孕的木乃伊~恐怖!! 使木乃伊懷孕的人~更加恐怖!
- 电容-贴片陶瓷电容的NPO、C0G、X7R、X5R、Y5V、Z5U