`

Apache mina 与Spring整合设计

阅读更多
其实很简单,看了网上很多例子,但是发现还是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 服务端程序

    在这个"apache mina-spring 服务端程序"项目中,Mina和Spring被整合在一起,创建了一个高效的服务端程序。这样的整合允许开发者利用Spring的强大功能来管理服务端的生命周期,配置网络连接,以及处理业务逻辑。...

    apache-mina-2.0.4.rar_apache mina_mina

    - **mina-integration-spring**模块:如果你的项目使用Spring框架,这个模块可以帮助你更好地集成Mina。 通过分析源码,你可以了解到Mina如何实现非阻塞I/O、如何调度任务、如何组织过滤器链,以及如何处理各种网络...

    Apache MINA框架相关资料

    4. **MINA和Spring整合**(MINA和spring整合.txt):Spring是一个广泛使用的Java应用框架,而MINA与Spring的整合使得开发者可以利用Spring的依赖注入和管理功能来简化MINA应用的开发。这份文档可能详细阐述了如何在...

    mina2+spring结合实例

    《Mina2与Spring整合应用实战》 在Java开发领域,Apache Mina和Spring框架的结合使用能够构建高效、可扩展的网络应用。Mina2作为一个轻量级的网络通信框架,提供了高度抽象的API,使得开发者可以方便地处理网络I/O...

    Mina例子包含与spring整合

    在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...

    spring boot 整合mina 串口

    **Spring Boot 整合Mina实现串口通信详解** 在Java开发中,有时我们需要与硬件设备进行串口通信,例如读取传感器数据或控制工业设备。Spring Boot作为一款轻量级的框架,使得快速构建应用变得简单。而Mina则是一款...

    mina 与spring的结合开发,包头指令

    在压缩包中的"MinaSpringDemo"可能包含了上述概念的示例代码,通过这个示例,你可以看到如何将MINA和Spring整合在一起,实现一个完整的网络服务应用,包括配置文件、过滤器、编码解码器和IoHandler的实现。...

    Apache Mina Server 2.0 抢鲜体验

    6. **工具集成**:作为标签中的"工具",Apache Mina可以与其他开源工具如Spring、Hibernate等良好集成,为开发者提供更强大的功能和更便捷的开发环境。 7. **源码分析**:由于标签中提到了“源码”,因此,对于有志...

    Apache MINA 2.0 用户指南中英文对照阅读版[带书签]

    本资源包含两个 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。...

    mina+spring+hibernate搭建所需jar包

    在构建Java企业级应用时,整合Apache MINA、Spring和Hibernate是常见的技术栈选择。这三个框架分别在不同的层面上提供服务:MINA为网络通信,Spring作为应用框架,而Hibernate则是对象关系映射(ORM)工具。以下是...

    Apache_MINA_2_用户指南.pdf

    * Spring 集成 是 MINA 中的一个核心组件,负责 Spring 集成。 * Spring 集成 提供了一个灵活的架构,使得开发者可以轻松地构建高性能的 Spring 集成服务。 Apache MINA 2 用户指南提供了一个详细的指南,帮助...

    spring+mina实现http接口服务端通信客户端

    3. **集成Mina**:引入Mina的相关依赖,然后在Spring配置中定义Mina的ServerBootstrap,包括Acceptor、ProtocolHandler以及相关的配置。Mina的IoHandler接口需要实现,用于处理接收到的网络事件。 4. **编写...

    springboot 深度整合mina开箱即用

    在本文中,我们将深入探讨如何将Spring Boot与Mina进行深度整合,以便为新手开发者提供一个开箱即用的解决方案。Spring Boot以其简洁的配置和快速的开发体验,已经成为Java领域中的主流微服务框架,而Mina则是一个...

    mina+spring实现多人聊天室程序

    Spring的IoC容器和AOP特性使得集成其他框架如Mina变得简单而优雅。 在构建多人聊天室程序时,首先我们需要在Spring配置文件中定义Mina的相关bean,包括ServerSocketConnector、ProtocolDecoder和ProtocolEncoder等...

    springboot整合mina

    SpringBoot整合Mina是一个常见的Java开发任务,它涉及到SpringBoot框架与Apache Mina网络通信库的集成。Mina是一个轻量级、高性能的网络应用框架,主要用于构建服务器端的网络应用,如TCP/IP和UDP协议的服务。而...

    ApacheMina2.0

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要设计用于简化开发服务端的高性能网络应用,如TCP/IP和UDP/IP协议的应用。在Java世界中,它为开发多种网络通信应用提供了基础架构,包括FTP、SMTP、...

    Apache_Mina_Server_2.0_V1.0.rar_apache_apache中文手册_mina

    10. **扩展与集成**:介绍如何将 Mina 与其他开源项目(如 Spring、Hibernate 等)集成,以增强应用功能。 通过深入学习“Apache Mina Server 2.0中文参考手册V1.0”,开发者可以全面了解 Mina 的核心功能,并掌握...

    Spring-mybaits-mina三大框架的整合

    在"Spring-mybaits-mina三大框架的整合"中,我们将看到如何将这三大框架集成到一个项目中,以实现更高效、更灵活的网络服务和数据访问。首先,Spring作为整体架构的基石,它的依赖注入特性使得我们可以方便地管理...

    SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行

    标题中的"SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行"指的是一个基于Java的Web应用程序开发框架的整合,它结合了多种技术来构建高效、灵活和可扩展的网络应用。这个集成方案主要包括以下组件: 1....

    Apache_Mina_Server_ 深入教程

    1. **Mina架构与设计理念** Apache Mina采用了事件驱动和异步I/O的模型,这种模型使得Mina在处理大量并发连接时表现出色。它将网络通信层和业务逻辑层分离,使得开发者可以专注于应用的业务处理,而不必关心底层的...

Global site tag (gtag.js) - Google Analytics