apache mina 学习(十四)-----与spring整合

原创 2012年03月21日 15:49:57

mina与spring整合的主要问题就是mina中一些bean的配置需要spring的ioc,我们首先看一个简单的服务端代码:

public void initialize() throws IOException {

	// Create an Acceptor
	NioDatagramAcceptor acceptor = new NioDatagramAcceptor();

	// Add Handler
	acceptor.setHandler(new ServerHandler());

	acceptor.getFilterChain().addLast("logging",
				new LoggingFilter());
	acceptor.getFilterChain().addLast("codec",
				new ProtocolCodecFilter(new SNMPCodecFactory()));

	// Create Session Configuration
	DatagramSessionConfig dcfg = acceptor.getSessionConfig();
        dcfg.setReuseAddress(true);
        logger.debug("Starting Server......");
        // Bind and be ready to listen
        acceptor.bind(new InetSocketAddress(DEFAULT_PORT));
        logger.debug("Server listening on "+DEFAULT_PORT);
}
整合步骤一般有三步:1、设置io handler 2、创建filters 3、创建socket

spring中设置iohandler:

<!-- The IoHandler implementation -->
  <bean id="trapHandler" class="com.ashishpaliwal.udp.mina.server.ServerHandler" />
Filters:

<bean id="snmpCodecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter">
    <constructor-arg>
      <bean class="com.ashishpaliwal.udp.mina.snmp.SNMPCodecFactory" />
    </constructor-arg>
  </bean>

  <bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" />

  <!-- The filter chain. -->
  <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="snmpCodecFilter"/>
      </map>
    </property>
  </bean>

我们用的是基于构造方法的注入方式,最后我们注入socket:

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

<!-- The IoAcceptor which binds to port 161 -->
<bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioDatagramAcceptor" init-method="bind" destroy-method="unbind">
    <property name="defaultLocalAddress" value=":161" />
    <property name="handler" ref="trapHandler" />
    <property name="filterChainBuilder" ref="filterChainBuilder" />
</bean>
这样我们可以在spring容器中获得mina的服务器实例了:

public void initializeViaSpring() throws Exception {
    new ClassPathXmlApplicationContext("trapReceiverContext.xml");
}



相关文章推荐

Mina集成到Spring

原文地址:Apache Mina ch17-spring-integration 本文演示了将Spring集成MINA应用。我写这篇文章在我的博客上,虽然放在这里,实际上这些信息属于博客空间。可...
  • boonya
  • boonya
  • 2016年07月14日 13:48
  • 2357

《Apache MINA 2.0 用户指南》第十七章:Spring 集成

本文演示了 MINA 应用和 Spring 的整合过程。
  • defonds
  • defonds
  • 2014年01月15日 10:28
  • 5284

spring整合mina开发web项目和简单mina客户端的使用

场景要求在web项目中使用mina与一些客户端通讯。一、maven引包

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

服务端1.常规的spring工程集成nima时,pom.xml中需要加入如下配置: org.slf4j slf4j-jdk14 1.7.7 ...
  • smile326
  • smile326
  • 2016年07月14日 20:26
  • 13483

Spring-mybaits-mina整合,启动多端口监听

Spring-mybaits-mina三大框架的整合,mina可以使用Spring的数据库数据库连接池,无需额外定义mybaits连接池。 不想看博客的话,项目完整下载地址:http://downl...

Mina框架与Spring整合配置文件

Mina框架与Spring的整合其实很简单,主要是要弄清楚要注入的属性的名称,进而选择合适的注入方法。...
  • rchm8519
  • rchm8519
  • 2014年08月07日 15:58
  • 10146

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

在学习mina这块时,在网上找了很多资料,只有一些[demo](http://blog.csdn.net/qazwsxpcm/article/details/71438737),只能实现客户端向服务端...

Spring4 集成Mina

http://www.tuicool.com/articles/JRzmqi 在spring和mina集成的时候,要十分注意一个问题:版本。 这是一个非常严重的问题,mina官网的de...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用MINA实现UDP通信的例子

1、UDPClient.java import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.ap...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache mina 学习(十四)-----与spring整合
举报原因:
原因补充:

(最多只允许输入30个字)