其实很简单,看了网上很多例子,但是发现还是Apache自己写的比较好,于是就抄下来了。
先说配置文件,
注意这里不能使用延迟加载和“byName”的方式找bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="false">
<!--
This makes it possible to specify java.net.SocketAddress values (e.g.
:80 below) as Strings. They will be converted into
java.net.InetSocketAddress objects by Spring.
-->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.net.SocketAddress">
<bean class="org.apache.mina.integration.spring.InetSocketAddressEditor" />
</entry>
</map>
</property>
</bean>
<!-- The IoHandler implementation -->
<bean id="myHandler" class="com.mina.MyProtocolHandler">
</bean>
<bean id="filterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
<property name="filters">
<list>
<bean class="org.apache.mina.filter.LoggingFilter" />
</list>
</property>
</bean>
<!--
By default MINA uses an ExecutorThreadModel. This demonstrates how to
use your own with some non default settings. The threadModel will be
set on the SocketAcceptorConfig defined below. To configure a
ExecutorFilter directly you will have to use the ThreadModel.MANUAL
ThreadModel instead.
-->
<bean id="threadModel"
class="org.apache.mina.integration.spring.ExecutorThreadModelFactoryBean">
<property name="serviceName" value="MyMinaService" />
<property name="executor">
<bean
class="org.apache.mina.integration.spring.ThreadPoolExecutorFactoryBean">
<property name="corePoolSize" value="2" />
<property name="maxPoolSize" value="30" />
<property name="keepAliveSeconds" value="30" />
</bean>
</property>
</bean>
<bean id="ioAcceptor"
class="org.apache.mina.integration.spring.IoAcceptorFactoryBean">
<property name="target">
<bean class="org.apache.mina.transport.socket.nio.SocketAcceptor" />
</property>
<property name="bindings">
<list>
<bean class="org.apache.mina.integration.spring.Binding">
<property name="address" value=":8081" />
<property name="handler" ref="myHandler" />
<property name="serviceConfig">
<bean class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
<property name="filterChainBuilder" ref="filterChainBuilder" />
<property name="reuseAddress" value="true" />
<property name="threadModel" ref="threadModel" />
</bean>
</property>
</bean>
</list>
</property>
</bean>
</beans>
再然后我们只需要实现MyProtocolHandler就可以了,只在接收数据加了处理,数据传输用的是byte[],MinaEndpoint里面来执行自己的代码就行了
public class MyProtocolHandler extends IoHandlerAdapter {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
if (message instanceof ByteBuffer) {
ByteBuffer rb = (ByteBuffer) message;
byte[] moMessage = new byte[rb.remaining()];
rb.get(moMessage);
Endpoint endpoint = new MinaEndpoint(session);
endpoint.receive(moMessage);
}
super.messageReceived(session, message);
}
}
最后就是EndPoint了,其实就两个方法,一个接收,一个发送
public class MinaEndpoint implements Endpoint {
private IoSession session;
public MinaEndpoint(IoSession session) {
this.session = session;
}
public void send(byte[] data) {
if (session.isConnected() && ArrayUtils.isEmpty(data)) {
ByteBuffer byteBuffer = ByteBuffer.allocate(data.length);
byteBuffer.put(data);
byteBuffer.flip();
session.write(byteBuffer);
}
}
public void receive(byte[] data) {
//Service的实现操作
}
其实这玩意主要还是配置文件,这个还是抄自IoAcceptorFactoryBean的API的说明,呵呵
分享到:
相关推荐
在这个"apache mina-spring 服务端程序"项目中,Mina和Spring被整合在一起,创建了一个高效的服务端程序。这样的整合允许开发者利用Spring的强大功能来管理服务端的生命周期,配置网络连接,以及处理业务逻辑。...
- **mina-integration-spring**模块:如果你的项目使用Spring框架,这个模块可以帮助你更好地集成Mina。 通过分析源码,你可以了解到Mina如何实现非阻塞I/O、如何调度任务、如何组织过滤器链,以及如何处理各种网络...
4. **MINA和Spring整合**(MINA和spring整合.txt):Spring是一个广泛使用的Java应用框架,而MINA与Spring的整合使得开发者可以利用Spring的依赖注入和管理功能来简化MINA应用的开发。这份文档可能详细阐述了如何在...
《Mina2与Spring整合应用实战》 在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O...
在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...
**Spring Boot 整合Mina实现串口通信详解** 在Java开发中,有时我们需要与硬件设备进行串口通信,例如读取传感器数据或控制工业设备。Spring Boot作为一款轻量级的框架,使得快速构建应用变得简单。而Mina则是一款...
在压缩包中的"MinaSpringDemo"可能包含了上述概念的示例代码,通过这个示例,你可以看到如何将MINA和Spring整合在一起,实现一个完整的网络服务应用,包括配置文件、过滤器、编码解码器和IoHandler的实现。...
6. **工具集成**:作为标签中的"工具",Apache Mina可以与其他开源工具如Spring、Hibernate等良好集成,为开发者提供更强大的功能和更便捷的开发环境。 7. **源码分析**:由于标签中提到了“源码”,因此,对于有志...
本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...
在构建Java企业级应用时,整合Apache MINA、Spring和Hibernate是常见的技术栈选择。这三个框架分别在不同的层面上提供服务:MINA为网络通信,Spring作为应用框架,而Hibernate则是对象关系映射(ORM)工具。以下是...
* Spring 集成 是 MINA 中的一个核心组件,负责 Spring 集成。 * Spring 集成 提供了一个灵活的架构,使得开发者可以轻松地构建高性能的 Spring 集成服务。 Apache MINA 2 用户指南提供了一个详细的指南,帮助...
3. **集成Mina**:引入Mina的相关依赖,然后在Spring配置中定义Mina的ServerBootstrap,包括Acceptor、ProtocolHandler以及相关的配置。Mina的IoHandler接口需要实现,用于处理接收到的网络事件。 4. **编写...
在本文中,我们将深入探讨如何将Spring Boot与Mina进行深度整合,以便为新手开发者提供一个开箱即用的解决方案。Spring Boot以其简洁的配置和快速的开发体验,已经成为Java领域中的主流微服务框架,而Mina则是一个...
Spring的IoC容器和AOP特性使得集成其他框架如Mina变得简单而优雅。 在构建多人聊天室程序时,首先我们需要在Spring配置文件中定义Mina的相关bean,包括ServerSocketConnector、ProtocolDecoder和ProtocolEncoder等...
SpringBoot整合Mina是一个常见的Java开发任务,它涉及到SpringBoot框架与Apache Mina网络通信库的集成。Mina是一个轻量级、高性能的网络应用框架,主要用于构建服务器端的网络应用,如TCP/IP和UDP协议的服务。而...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要设计用于简化开发服务端的高性能网络应用,如TCP/IP和UDP/IP协议的应用。在Java世界中,它为开发多种网络通信应用提供了基础架构,包括FTP、SMTP、...
10. **扩展与集成**:介绍如何将 Mina 与其他开源项目(如 Spring、Hibernate 等)集成,以增强应用功能。 通过深入学习“Apache Mina Server 2.0中文参考手册V1.0”,开发者可以全面了解 Mina 的核心功能,并掌握...
在"Spring-mybaits-mina三大框架的整合"中,我们将看到如何将这三大框架集成到一个项目中,以实现更高效、更灵活的网络服务和数据访问。首先,Spring作为整体架构的基石,它的依赖注入特性使得我们可以方便地管理...
标题中的"SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行"指的是一个基于Java的Web应用程序开发框架的整合,它结合了多种技术来构建高效、灵活和可扩展的网络应用。这个集成方案主要包括以下组件: 1....
1. **Mina架构与设计理念** Apache Mina采用了事件驱动和异步I/O的模型,这种模型使得Mina在处理大量并发连接时表现出色。它将网络通信层和业务逻辑层分离,使得开发者可以专注于应用的业务处理,而不必关心底层的...