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

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

应用结构

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

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

初始化代码

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

public void initialize() throws IOException {// Create an AcceptorNioDatagramAcceptor acceptor = new NioDatagramAcceptor();// Add Handleracceptor.setHandler(new ServerHandler());acceptor.getFilterChain().addLast("logging",new LoggingFilter());acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new SNMPCodecFactory()));// Create Session ConfigurationDatagramSessionConfig dcfg = acceptor.getSessionConfig();dcfg.setReuseAddress(true);logger.debug("Starting Server......");// Bind and be ready to listenacceptor.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");
}

Mina集成到Spring相关推荐

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

    标签: 本篇内容还是建立在上一篇Java Web学习系列--Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Ja ...

  2. jsf集成spring_JSF Spring Hibernate集成示例教程

    jsf集成spring Welcome to JSF Spring Hibernate Integration example tutorial. In our last tutorial, we s ...

  3. Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)

    说明: (1)介绍了两种创建Spring Boot项目的方式:[Spring 官网start.spring.io]方式,[IDEA集成的Spring Initializr]方式: (2)更推荐使用[I ...

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

    这个找了很久,一直想用这个功能,在xml里,配置如下: <?xml version="1.0" encoding="UTF-8"?> <bea ...

  5. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系

    介绍 WireMock是用于基于HTTP的API的模拟服务器. 有些人可能会将其视为服务虚拟化工具或模拟服务器. 它使您能够存根所需的API或其他外部依赖项,以加快本地开发速度. 它支持测试真实API ...

  6. 持续集成之 Spring Boot 实战篇

    本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程.本教程还有 B 站视频版,帮助读者更好 ...

  7. Quartz集成到 Spring

    Spring-quartz工程 Spring在 spring-context-support.jar中直接提供了对 Quartz的支持. 可以在配置文件中把 JobDetail.Trigger.Sch ...

  8. CXF与Web项目集成---without Spring

    1.CXF集成web项目,是通过org.apache.cxf.transport.servlet.CXFNonSpringServlet进行集成 2.servlet Java代码    public  ...

  9. java集成hibernate_JavaWeb_(Spring框架)Spring整合Hibernate

    Dao层类要继承HibernateDaoSupport.java父类 原先使用Hibernate框架hibernate.cfg.xml配置数据库 com.mysql.jdbc.Driver jdbc: ...

最新文章

  1. python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法
  2. Django实战之增加链接
  3. 戴尔t410支持哪些服务器系统,DELL服务器T410
  4. oss可用性_对象存储OSS详解
  5. 如何调用webservice接口
  6. k8s部署tomcat及web应用_部署 Spring Boot 应用到 K8S 教程
  7. 数据库基础知识——DQL语言(一)
  8. Redis Cluster集群的搭建与实践
  9. 华为发布国行版P40系列,售价4188元起;大疆回应“至少50%的裁员清扫计划”;Firefox 75发布 | 极客头条...
  10. IIS 发布的FTP提供下载时的转码问题
  11. oracle服务器客户端配置文件,服务器 oracle 客户端配置文件
  12. 【数学建模暑期培训】CUMCM历年题分类 2000-2021年数模国赛赛题及求解模型
  13. plsql 导入导出数据
  14. 基于单片机的水壶自动加热系统_基于单片机电热水壶控制系统的设计
  15. 宝宝起名神器微信小程序源码下载支持多种流量主模式
  16. 怎么申请企业电子邮箱?TOM企业邮箱注册电子邮件流程详解
  17. wordpress点击伸缩归档(archives)页面
  18. VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
  19. 可信计算和可信赖计算的渊源
  20. 【大学生竞赛以及项目】群体智能-——人工智能的必然趋势

热门文章

  1. 深入源码探索:SAP 标准报表怎样实现不同「报表格式/清单类型」的输出?
  2. 福建厦门双十计算机竞赛,厦门双十中学新高三学生 获信息学奥赛金奖保送清华...
  3. 使用 use_frameworks! 后项目YYCache库报错 Duplicate interface
  4. 出现频次统计countMatches
  5. EventLog实现事件日志操作
  6. 基于AmazonS3协议的OSS通用组件,minio8集成(附仓库)
  7. CentOS 7安装和简单配置ss5
  8. 接近完美的监控系统—普罗米修斯
  9. Linux如何查找大文件
  10. fastDFS and mogileFS