mina sping 整合

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/beans                          http://www.springframework.org/schema/beans/spring-beans.xsd                          "        >    <!-- The IoHandler implementation -->    <bean id="timeServerHandler" class="com.spring.mina.TimeServerHandler" />

    <!--filter-->    <bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" />    <bean id="protocolCodecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter" >        <constructor-arg>           <bean class="org.apache.mina.filter.codec.textline.TextLineCodecFactory">           </bean>        </constructor-arg>    </bean>    <bean id="executorFilter" class="org.apache.mina.filter.executor.ExecutorFilter">        <constructor-arg index="0" value="10" />        <constructor-arg index="1" value="20"/>    </bean>    <bean id="mdcInjectionFilter" class="org.apache.mina.filter.logging.MdcInjectionFilter">        <constructor-arg value="remoteAddress"/>    </bean>

    <!-- The filter chain. -->    <bean id="filterChainBuilder" class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder">        <property name="filters">            <map>                <entry key="executor" value-ref="executorFilter"/>                <entry key="mdcInjectionFilter" value-ref="mdcInjectionFilter"/>                <entry key="loggingFilter" value-ref="loggingFilter"/>                <entry key="codecFilter" value-ref="protocolCodecFilter"/>            </map>        </property>    </bean>

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">        <property name="customEditors">            <map>                <entry key="java.net.SocketAddress" value="org.apache.mina.integration.beans.InetSocketAddressEditor">                </entry>            </map>        </property>    </bean>

    <!-- session config -->    <bean id="sessionConfig" factory-bean="ioAcceptor" factory-method="getSessionConfig" >        <property name="bothIdleTime" value="10"/>        <property name="receiveBufferSize" value="1024"/>        <property name="sendBufferSize" value="1024"/>    </bean>

    <!-- The IoAcceptor which binds to port 9123-->    <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor" init-method="bind" destroy-method="unbind">        <property name="defaultLocalAddress" value=":9123" />        <property name="handler" ref="timeServerHandler" />        <property name="filterChainBuilder" ref="filterChainBuilder" />        <property name="reuseAddress"  value="true"/>        <property name="backlog" value="100"/>    </bean>

</beans>    
public class TimeServerHandler extends IoHandlerAdapter{    public TimeServerHandler() {        super();    }

    @Override    public void sessionCreated(IoSession session) throws Exception {        super.sessionCreated(session);        System.err.println("session is created !");    }

    @Override    public void sessionOpened(IoSession session) throws Exception {        super.sessionOpened(session);        System.err.println("session is open !");    }

    @Override    public void sessionClosed(IoSession session) throws Exception {        super.sessionClosed(session);        System.err.println("session is closed !");    }

    @Override    public void sessionIdle(IoSession session, IdleStatus status) throws Exception {        super.sessionIdle(session, status);        System.err.println("IDLE:" +status.toString() +";count:"+ session.getIdleCount( status ));    }

    @Override    public void exceptionCaught(IoSession session, Throwable cause) throws Exception {        super.exceptionCaught(session, cause);    }

    @Override    public void messageReceived(IoSession session, Object message) throws Exception {//        super.messageReceived(session, message);        String str = message.toString();        System.err.println("receive message:"+str);        if( str.trim().equalsIgnoreCase("quit") ) {            session.closeOnFlush();            return;        }        Date date = new Date();        session.write(date.toString());        System.out.println("Message written...");    }

    @Override    public void messageSent(IoSession session, Object message) throws Exception {        System.err.println("ready send message!"+message.toString());        super.messageSent(session, message);    }

    @Override    public void inputClosed(IoSession session) throws Exception {        super.inputClosed(session);    }}
public class Test {    public static void main(String[] args)    {        new ClassPathXmlApplicationContext("spring-config.xml");    }}

参考文档:

http://www.tuicool.com/articles/JRzmqi

http://mina.apache.org/mina-project/userguide/ch17-spring-integration/ch17-spring-integration.html

时间: 2024-10-12 22:11:55

mina sping 整合的相关文章

Apache MINA框架整合到Spring框架中

毕业设计用到了Apache公司的MINA框架作为服务端与安卓客户端的通信框架. 问题:服务端分为两个部分,一个是基于javaEE平台的后台管理系统,另一个是基于MINA框架的服务,整个项目中需求是当tomcat服务器启动的时候,将MINA服务也一起启动起来,相当于服务端程序运行起来后,开启两个服务. 分析:服务端的后台管理系统是采用Spring+Hibernate框架整合搭建的,而当tomcat服务器启动后,会加载spring的配置文件,而spring配置文件中可以自定义监听器,将启动MINA服

sping整合redis,以及做mybatis的第三方缓存

一.spring整合redis Redis作为一个时下非常流行的NOSQL语言,不学一下有点过意不去. 背景:学习Redis用到的框架是maven+spring+mybatis(框架如何搭建这边就不叙述了) 首先在pom里面添加当前所需要的jar包,有下面几个: ------ <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <versi

Sping MVC 整合Junit4进行单元测试及常见错误解决

1.Sping整合Junit4进行单元测试:使用spring-test和Junit4进行单元测试 (1)maven依赖:添加spring-test和Junit4 jar包对于jdk1.7版本,spring4版本,依赖如下: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scop

Spring 整合Hibernate

Sping 整合Hibernate 整合什么? 由IOC 容器来管理Hibernate 的SessionFactory 让Hibernate 使用上Spring 的声明式事务 整合步骤: 加入Hibernate 加入Spring 整合

Spring最简设置

Sping 整合 MVN, 类注释 @Controller 方法注释: @RequestMapping("/hello") 必须. Web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.co

Mybatis 映射器接口代理对象的方式 运行过程debug分析

查询一张表的所有数据. 环境: 使用工具IntelliJ IDEA 2018.2版本. 创建Maven工程不用骨架 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

androidpn服务端整合mina出现异常

spring 的版本不一样标签使用的方式也稍有差距 这一次,为了在服务端加入Androidpn的东西,进行了不同的版本的整合 spring配置方式的改变,bug就会出现,整合就不顺利了 这一次就说一下mina在spring的配置问题 <!-- =============================================================== --> <!-- MINA --> <!-- ===============================

Mina、Netty、Twisted一起学(五):整合protobuf

protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化.反序列化),一般应用于网络传输,可支持多种编程语言. protobuf怎样使用这里不再介绍,本文主要介绍在MINA.Netty.Twisted中怎样使用protobuf,不了解protobuf的同学能够去參考我的还有一篇博文. 在前面的一篇博文中.有介绍到一种用一个固定为4字节的前缀Header来指定Body的字节数的一种消息切割方式.在这里相同要使用到. 仅仅是当中Body的内容不再是字

Mina框架与Spring整合配置文件

Mina框架与Spring的整合其实很简单,主要是要弄清楚要注入的属性的名称,进而选择合适的注入方法. 关于Spring的四种注入方法请另一篇文章:spring依赖注入的四种方式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w