本文将说明mina如何与Spring整合使用。原文请看http://mina.apache.org/integrating-with-spring.html
应用程序结构
我们将要构造一个如下内容的工程
- 一个Handler
- 两个Filter - Logging Filter 和 ProtocolCodec Filter
- NioDatagram Socket
初始化代码
让我们先看看代码,我们省略了部分代码
public void initialize() throws IOException {
// 创建一个 Acceptor
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
// 加入 Handler
acceptor.setHandler(new ServerHandler());
acceptor.getFilterChain().addLast("logging",
new LoggingFilter());
acceptor.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new SNMPCodecFactory()));
// 创建 Session Configuration
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReuseAddress(true);
logger.debug("Starting Server......");
// 绑定并监听
acceptor.bind(new InetSocketAddress(DEFAULT_PORT));
logger.debug("Server listening on "+DEFAULT_PORT);
}
整合处理
与Spring整合我们需要以下步骤
- 设置IO handler
- 创建Filter并加入chain中
- 创建并设置Socket
注意:最新版本的Mina并不像早起版本一样包含Spring连接的包。 The package is now named Integration Beans, to make the implementation work for all DI frameworks.
让我们看看Spring的配置文件。请注意观察我从配置文件中摘取的部分
这个例子源于mina发行版中的Chat example ,请参考例子中的XML文件。
让我们在Spring的上下文(Context)中设置IO Handler
<bean id="trapHandler" class="com.ashishpaliwal.udp.mina.server.ServerHandler" />
让我们创建Filter Chain
<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" />
<!-- 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>
在这里我们创建了一个Filter实例。在ProtocolCodec factory中我们使用了构造器注入,在后面是loggingFilter。我们定义完成了将要使用的Filter,然后我们接着定义执行这些Filter的Filter Chain,定义一个ID为“FilterChainBuidler”的Bean,然后将Filter注入其中。我们即将完成我们的整合,现在只需要创建一个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>
<!-- IoAcceptor 绑定在 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并设置IO handler 和 Filter Chain。在Spring里写一个函数来读取配置文件。
public void initializeViaSpring() throws Exception {
new ClassPathXmlApplicationContext("trapReceiverContext.xml");
}
我们只需要写一个main函数来调用这个方法就可以初始化mina了。
这是我的第一篇译作,水平有限大家多包涵。
分享到:
相关推荐
通过以上这些知识点的深入理解和实践,你可以成功地将Mina与Spring集成,构建一个能够同时处理文件和文本传输的服务。这个过程涉及到了网络通信、协议设计、框架集成等多个层面,对提升你的Java网络编程能力大有裨益...
**Spring Boot 整合Mina实现串口通信详解** 在Java开发中,有时我们需要与硬件设备进行串口通信,例如读取传感器数据或控制工业设备。Spring Boot作为一款轻量级的框架,使得快速构建应用变得简单。而Mina则是一款...
《Mina2与Spring整合应用实战》 在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O...
在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...
在压缩包中的"MinaSpringDemo"可能包含了上述概念的示例代码,通过这个示例,你可以看到如何将MINA和Spring整合在一起,实现一个完整的网络服务应用,包括配置文件、过滤器、编码解码器和IoHandler的实现。...
4. Mina-Spring整合 Spring的IoC容器可以管理Mina服务端或客户端的生命周期,使得Mina的配置变得更加简单和灵活。通过Spring的Bean定义,我们可以配置Mina的Acceptor、ProtocolDecoder、ProtocolEncoder等组件,实现...
通过这个项目,开发者可以学习到如何将Mina的异步I/O能力与Spring的容器管理及依赖注入机制结合,构建出健壮且易于维护的网络服务端程序。这包括理解Mina的事件模型、Spring的bean管理和网络编程的最佳实践。同时,...
Spring与Mina的整合** 在Spring中整合Mina,首先需要在Spring配置文件中声明Mina的相关bean,如Acceptor、ProtocolCodecFactory(编码解码工厂)和FilterChainBuilder(过滤器链构建器)。通过Spring的依赖注入,...
《基于Mina与Spring构建的聊天室程序详解》 在当今的互联网世界中,实时通信技术扮演着至关重要的角色,而Mina与Spring框架的结合则为开发高效、稳定的聊天室程序提供了强大的支持。本文将深入探讨如何利用Mina作为...
在与MINA和Hibernate集成时,Spring可以用来管理服务端的bean,以及数据访问对象(DAO)和事务管理。 3. **Hibernate ORM**: Hibernate是一个强大的ORM框架,能够将Java对象映射到关系数据库中的表,从而减少了...
在本文中,我们将深入探讨如何将Spring Boot与Mina进行深度整合,以便为新手开发者提供一个开箱即用的解决方案。Spring Boot以其简洁的配置和快速的开发体验,已经成为Java领域中的主流微服务框架,而Mina则是一个...
该项目是本人真实项目中使用到的mina + spring+struts2 + mybatis框架,里面有详细的注释说明,以及一个完整的接收消息、入库、返回例子。对需要真实项目开发的人员来说,可以直接使用。 另外,如果需要更加详细的...
本文将深入探讨如何将Mina与Spring结合,模仿Spring MVC的控制器模式,以适应移动终端的项目开发需求。 首先,理解Mina的核心概念是至关重要的。Mina提供了一个事件驱动的模型,通过I/O多路复用技术,如NIO(非阻塞...
之前的项目需要用到mina,实现的功能主要是:服务端主动发送消息到客户端,这个的服务端为外网的...当然,我这里的服务端是整合的了spring 的,也可以直接把服务端独立出来,不整合spring,这个都一样,区别不大。
SpringBoot整合Mina是一个常见的Java开发任务,它涉及到SpringBoot框架与Apache Mina网络通信库的集成。Mina是一个轻量级、高性能的网络应用框架,主要用于构建服务器端的网络应用,如TCP/IP和UDP协议的服务。而...
Spring的IoC容器和AOP特性使得集成其他框架如Mina变得简单而优雅。 在构建多人聊天室程序时,首先我们需要在Spring配置文件中定义Mina的相关bean,包括ServerSocketConnector、ProtocolDecoder和ProtocolEncoder等...
在"Spring-mybaits-mina三大框架的整合"中,我们将看到如何将这三大框架集成到一个项目中,以实现更高效、更灵活的网络服务和数据访问。首先,Spring作为整体架构的基石,它的依赖注入特性使得我们可以方便地管理...
标题中的"SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行"指的是一个基于Java的Web应用程序开发框架的整合,它结合了多种技术来构建高效、灵活和可扩展的网络应用。这个集成方案主要包括以下组件: 1....
3. **集成Mina**:引入Mina的相关依赖,然后在Spring配置中定义Mina的ServerBootstrap,包括Acceptor、ProtocolHandler以及相关的配置。Mina的IoHandler接口需要实现,用于处理接收到的网络事件。 4. **编写...
9. **MINA与Spring集成**:MINA可以与Spring框架无缝集成,利用Spring的依赖注入和配置管理特性,简化MINA应用的开发和维护。 10. **最佳实践**:学习MINA的过程中,了解最佳实践至关重要,例如如何优化性能,如何...