本文将说明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了。
这是我的第一篇译作,水平有限大家多包涵。
分享到:
相关推荐
mina2+spring结合实例
这是一个基于spring mina 的服务端整合框架
apahce的MINA例子,包含了与spring的整合
找了很长时间网上没有一个详细整合的例子,现在已整合成功 放上来让大家参照,少走弯路,稍后会放出博客说明 使用idea 打开后可以直接使用的例子,很珍贵
一个mina跟Spring、Hibernate整合的说明文档,挺好的,有需要的可以看看
用一个监听既可以传文件又可以传文本 mina 集成spring 传输文件和文本
该项目是本人真实项目中使用到的mina + spring+struts2 + mybatis框架,里面有详细的注释说明,以及一个完整的接收消息、入库、返回例子。对需要真实项目开发的人员来说,可以直接使用。 另外,如果需要更加详细的...
该程序集成mina框架与spring框架实现多人聊天程序
集成mina、spring ,模仿springmvc实现类似web项目开发,适合移动终端
SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成,都是最新的包, 发布就可运行,配置文件都写了详细的注释。
之前的项目需要用到mina,实现的功能主要是:服务端主动发送消息到客户端,这个的服务端为外网的...当然,我这里的服务端是整合的了spring 的,也可以直接把服务端独立出来,不整合spring,这个都一样,区别不大。
3.结合自己系统时(导成jar集成进自己系统)需要继承与serverHandler,实现里面doService方法 4.本系统支持HTTP以及TCP链接,这个是参考CSDN上的网友的办法 5.没有进行过压力测试,生产环境慎用 6.日后经过压力测试...
Spring-mybaits-mina三大框架的整合,mina可以使用Spring的数据库数据库连接池,无需额外定义mybaits连接池。
spring结合Mina的配置文件,设计到spring构造 属性编辑器
springboot 深度整合mina开箱即用,适合新手上来研究。希望下载过的同学能来评论。
1:Spring-mybaits-mina三大框架的整合,mina可以使用Spring的数据库数据库连接池,无需额外定义mybaits连接池。 2:mina可以自定义监听一个或者多个端口,可以从数据库中读取
此demo利用springmvc整合mina,实现客户端主动发送消息到服务端,并且以http接口的方式实现,亲测可用。
一个简单的spring整合mina实例。分别介绍了TCP和UDP的用法。同时与Spring4.1.X进行了整合。 useage Tcp:首先运行HelloTcpServer,接着在运行HelloTcpClient。在HelloTcpClient的控制台输入消息内容,观察服务端返回...
springboot 整合了mina 并自定义解码器 复制进去导个包即可食用
本篇文章主要介绍了详解spring集成mina实现服务端主动推送(包含心跳检测),具有一定的参考价值,与兴趣的可以了解一下