Mina集成到Spring

原文地址:Apache Mina ch17-spring-integration

本文演示了将Spring集成MINA应用。我写这篇文章在我的博客上,虽然放在这里,实际上这些信息属于博客空间。可以找到原始的附件:Spring集成Mina

应用结构

我们应当采取一个标准Mina应用构造:

  • 一个handler
  • 两个过滤器——Logging过滤器和一个ProtocolCodec过滤器
  • NioDatagram 套接字

初始化代码

首先让我们看看代码。为简单起见,我们省略了无关代码。

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);
}

集成处理

集成Spring我们需要做如下操作:

  • 设置Io handler
  • 创建过滤器添加到过滤器链
  • 创建Socket并设置Socket参数

注:最新的MINA版本没有指定的Spring包,倾向于Spring早期版本。包现在被叫作集成Beans,即所有DI框架的实现工作。

让我们看看Spring xml文件。请注意我已经从xml删除了通用部分,只把具体事情需要打开实现。这个例子来自聊天示例附带Mina
发布版。请参考附带的xml聊天例子。

现在让我们把东西放在一起。让我们在Spring上下文中设置Io处理器(handler)。

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

让我们创建过滤器链:

<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>

在这里,我们创建我们的IoFilter的实例。看ProtocolCodec工厂,我们使用构造函数注入。日志过滤器直接创建。一旦我们完成bean定义的过滤,我们现在创建过滤器链用于实现。我们定义了一个bean
id为“FilterChainBuidler”和添加定义的过滤器。我们几乎准备好了,我们只需要创建套接字和调用绑定。

允许完成创建套接字和完成的最后一部分链:

<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>

现在我们创建ioAcceptor,设置输入输出处理程序和过滤器链。现在我们要使用Spring编写一个函数来读取这个文件并启动我们的应用程序。这是代码:

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

时间: 2024-10-05 15:19:25

Mina集成到Spring的相关文章

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

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

一键式Spring集成工具 Spring Boot

最近公司使用Spring boot进行开发,稍微了解一下,不过自我感觉把集中式配置applicate.properties搞明白,注解用过Spring MVC的boot绝对没问题的 比如拦截器:@Aspect public class ControllerAspect { //对 com.store59.creditmall.controller包下面的所有类的所有带request对象的方法 进行拦截 @Before("execution(* com.store59.creditmall.con

JFinal Dao 集成到 Spring

最近公司其它部门的同事还有朋友都表示对jfinal有很大的兴趣,我发现最主要的一点是jfianl极简风格和牛x的开发效率让大家为之兴奋,尤其是jfinal的dao设计.至于没有在新项目中进行尝试,因为好多项目需要对事务尤其是多库事务上进行处理,而这点也让大家犯难了起来.公司目前的项目是基于springmvc+mybatis,所以我将jfinal dao 集成到spring上,利用spring 强大的事务抽象能力解决事务难题. 不说了,先上代码..     <bean id="jFinalD

Mina集成Spring --- 在配置文件中配置sessionconfig

这个找了很久,一直想用这个功能,在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" xmlns:aop="http://www

java(样品集成框架spring、spring mvc、spring data jpa、hibernate)

这是你自己的参考springside集成框架的开源项目.主要的整合spring.spring mvc.spring data jpa.hibernate几个框架,对于这些框架中仍然感觉更舒适spring data jpa该框架,该框架编写dao上课时间,只需要编写一个接口声明,spring data jpa会自己主动的实现事实上现类,使用起来比較方便,至于具体的用法还请自己百度吧,由于我也不清楚. 个人感觉另一个比較不错的地方就是可以打印sql语句,都知道hibernate打印的sql语句并不会

hibernate search5.3.0全文检索集成到spring data jpa

hibernate search 我就不多说了,它是基于lucene的全文检索工具,记得上大学那时候接触了compass全文检索工具,后来也没怎么用,再后来这家伙不更新了,所以hibernate就推出了自己的基于lucene的全文检索工具就是这家伙hibernate Search. 不用说天然的优势就是可以无缝的和hibernate集成甚至不需要什么配置,一直在更新中,最近想在自己的博客里面加入搜索功能,本想用比较热乎的solr,找了半天资料还是放弃了,用在我的博客里面有点大题小做了,所以自然就

不使用SpringBoot如何将原生Feign集成到Spring中来简化http调用

在微服务架构中,如果使用得是SpringCloud,那么只需要集成SpringFeign就可以了,SpringFeign可以很友好的帮我们进行服务请求,对象解析等工作. 然而SpingCloud是依赖于SpringBoot的.在老的Spring项目中通常是没有集成SpringBoot,那么我们又该如何使用Feign组件进行调用呢? 这种情况下就只能使用原生Feign了,Feign使用手册:https://www.cnblogs.com/chenkeyu/p/9017996.html 使用原生Fe

集成SpringMVC, Spring, Mybatis环境

web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app version="3.1"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns="http://xmlns.jcp.org/xml/ns/javaee"   xsi:schemaLocation="