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>

publicclassTimeServerHandlerextendsIoHandlerAdapter
{
publicTimeServerHandler(){
super();
}

@Override
publicvoidsessionCreated(IoSessionsession)throwsException{
super.sessionCreated(session);
System.err.println("sessioniscreated!");
}

@Override
publicvoidsessionOpened(IoSessionsession)throwsException{
super.sessionOpened(session);
System.err.println("sessionisopen!");
}

@Override
publicvoidsessionClosed(IoSessionsession)throwsException{
super.sessionClosed(session);
System.err.println("sessionisclosed!");
}

@Override
publicvoidsessionIdle(IoSessionsession,IdleStatusstatus)throwsException{
super.sessionIdle(session,status);
System.err.println("IDLE:"+status.toString()+";count:"+session.getIdleCount(status));
}

@Override
publicvoidexceptionCaught(IoSessionsession,Throwablecause)throwsException{
super.exceptionCaught(session,cause);
}

@Override
publicvoidmessageReceived(IoSessionsession,Objectmessage)throwsException{
//super.messageReceived(session,message);
Stringstr=message.toString();
System.err.println("receivemessage:"+str);
if(str.trim().equalsIgnoreCase("quit")){
session.closeOnFlush();
return;
}
Datedate=newDate();
session.write(date.toString());
System.out.println("Messagewritten...");
}

@Override
publicvoidmessageSent(IoSessionsession,Objectmessage)throwsException{
System.err.println("readysendmessage!"+message.toString());
super.messageSent(session,message);
}

@Override
publicvoidinputClosed(IoSessionsession)throwsException{
super.inputClosed(session);
}
}

publicclassTest{
publicstaticvoidmain(String[]args)
{
newClassPathXmlApplicationContext("spring-config.xml");
}
}

参考文档:

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

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