简单介绍:MINA框架是对java的NIO包的一个封装,简化了NIO程序开发的难度,封装了很多底层的细节,然开发者把精力集中到业务逻辑上来,最近做了一个相关的项目,为了备忘对MINA做一个总结。
下面这个start方法用来初始化MINA:
-
private void start(int port, WebContext ctx)
- throws IOException, InstantiationException
- , IllegalAccessException, ClassNotFoundException {
-
- NioSocketAcceptor acceptor = new NioSocketAcceptor(5);
-
- java.util.concurrent.Executor threadPool = Executors.newFixedThreadPool(1500);
-
- acceptor.getFilterChain().addLast("exector", new ExecutorFilter(threadPool));
- acceptor.getFilterChain().addLast("codec",
- new ProtocolCodecFilter(new WebDecoder(),new WebEncoder()));
- LoggingFilter filter = new LoggingFilter();
- filter.setExceptionCaughtLogLevel(LogLevel.DEBUG);
- filter.setMessageReceivedLogLevel(LogLevel.DEBUG);
- filter.setMessageSentLogLevel(LogLevel.DEBUG);
- filter.setSessionClosedLogLevel(LogLevel.DEBUG);
- filter.setSessionCreatedLogLevel(LogLevel.DEBUG);
- filter.setSessionIdleLogLevel(LogLevel.DEBUG);
- filter.setSessionOpenedLogLevel(LogLevel.DEBUG);
- acceptor.getFilterChain().addLast("logger", filter);
-
- acceptor.setReuseAddress(true);
-
- acceptor.getSessionConfig().setReuseAddress(true);
- acceptor.getSessionConfig().setReceiveBufferSize(1024);
- acceptor.getSessionConfig().setSendBufferSize(10240);
-
- acceptor.getSessionConfig().setTcpNoDelay(true);
-
- acceptor.setBacklog(100);
- acceptor.setDefaultLocalAddress(new InetSocketAddress(port));
-
- acceptor.setHandler(new WebHandler());
- acceptor.bind();
- }
NioSocketAcceptor是MINA的适配器,一切都是从这里开始的。MINA中有个过滤器和处理器的概念,过滤器用来过滤数据,处理器用来处理数据。具体来说MINA的处理模型就是request->过滤器A->过滤器B->处理器->过滤器B->过滤器A->response,这里的request和response类似serlvet的request和response。
- acceptor.getFilterChain().addLast("exector", new ExecutorFilter(threadPool));
-
- acceptor.getFilterChain().addLast("codec",
- new ProtocolCodecFilter(new WebDecoder(),new WebEncoder()));
-
-
现在详细描述一下request->WebDecoder->WebHandler->WebEncode->response的过程:
客户端发送一个请求到MINA服务器,这里相当于来了一个requet。请求首先来到
- WebDecoder类(实现了ProtocolDecoder接口)中的
-
boolean decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception{}方法
-
-
-
-
-
-
-
-
-
-
然后到
- WebHandler(扩展了IoHandlerAdapter抽象类)中的
-
void messageReceived(IoSession session, Object message) throws Exception{}方法
- WriteFuture future = session.write(response);
- future.addListener(IoFutureListener.CLOSE);
- IoFutureListener里面有个operationComplete(IoFuture future)方法,当流发送完成之后才调用这个方法。
-
-
-
-
-
-
然后到
- WebEncoder类(实现了ProtocolEncoder接口)中的
-
boolean encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception{}
- 方法
-
-
-
-
-
-
-
分享到:
相关推荐
在MINA框架中,`NioSocketAcceptor` 是一个核心组件,它用于监听和接受来自客户端的连接请求。在提供的代码片段中,`start` 方法初始化了一个 `NioSocketAcceptor` 实例,并设置了相关的配置: 1. 线程池:`...
阻塞和非阻塞io的简单通信程序,自己写的(写的不好)放这里做个备份 博文链接:https://javag.iteye.com/blog/221595
总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。
mina 框架使用总结 mina 框架是对 Java 的 NIO 包的一个封装,简化了 NIO 程序开发的难度,封装了很多底层的细节,使开发者把精力集中到业务逻辑上来。下面是对 mina 框架使用的总结。 1. MINA 框架概述 MINA ...
### MiNA框架新人指导知识点详解 #### 一、前言 在金融行业的IT技术栈中,**MiNA** 和 **HTTPClient** 是两个至关重要的技术框架。这些框架被广泛应用于支付平台与银行之间的通信,例如支付宝与各大银行的交互过程...
总结来说,Mina框架是一个强大的工具,用于构建高性能的网络服务,而SLF4J则提供了灵活的日志记录解决方案。通过下载的“Mina完整架包”,开发者可以获得所有必要的组件,开始创建自己的网络应用程序。
### Mina框架研究与实现 #### 引言 在当今高度网络化的世界中,服务器端程序面临着前所未有的挑战,特别是当需要同时处理成百上千的客户端连接时。这不仅要求服务器具备高性能,还必须保证高可用性。Mina框架正是...
总结起来,Apache Mina是一个强大且灵活的网络通信框架,通过其事件驱动和异步IO模型,简化了网络应用的开发过程。IoService、IoProcessor、IoFilter和IoHandler这四个关键接口协同工作,确保了数据的高效传输和业务...
总结,Android Mina框架是实现高效、可靠的网络通信的重要工具。通过理解和掌握其原理及应用,开发者能更好地应对Android环境下的网络挑战,为用户打造更加流畅的应用体验。通过`MinaClientDemo`项目,开发者可以...
总结,Mina2作为一个强大的网络通信框架,为企业级的网络应用提供了高效、灵活的解决方案。通过理解其核心概念,掌握使用步骤,并结合实例教程,开发者能够更好地利用Mina2开发自己的网络应用。
总结起来,Android平台上的MINA框架提供了一套强大的网络通信解决方案,能够帮助开发者快速、高效地构建网络应用。在实际使用中,我们需要关注中文乱码问题的解决、保持Socket连接的稳定性和可靠性,以及如何在...
总结,MINA框架的自定义解编码器功能为我们提供了灵活的数据处理方式,通过定制解编码器,我们可以更好地适应各种网络协议和业务需求。在实践中,我们需要充分理解协议格式,合理设计解编码流程,以实现高效且可靠的...
总结起来,"坐席通讯监控软件"采用Mina框架,利用其非阻塞I/O、事件驱动和高度可扩展的特性,构建了一个高效、可靠的客户端通信系统。而"举手终端"则可能是这个系统中的一个重要组成部分,用于实现用户交互和信息...
总结来说,MINA框架提供了NIO的高级抽象,使得开发者可以通过简单的API实现复杂网络服务,同时保持高性能和可扩展性。通过使用过滤器链和自定义处理器,MINA允许开发者以模块化的方式处理网络通信,从而专注于业务...
总结来说,MINA框架简化了Java网络编程,提供了高性能的异步I/O和事件驱动机制,通过过滤器链实现数据处理功能。开发者可以专注于业务逻辑,而无需关心底层的网络细节。通过学习和掌握MINA,我们可以构建稳定、高效...
# Mina框架详解 ## 一、Mina框架概述 Mina框架,全称为Apache Mina Server,是一款基于Java的高效、可扩展性强大的网络通信应用框架。它主要支持TCP/IP与UDP/IP协议栈,同时也提供了序列化服务、虚拟机管道通信等...
总结来说,这个教程将帮助你了解如何使用Spring Boot整合Mina框架,实现基于NIO的TCP通信。通过学习,你不仅可以掌握Spring Boot的整合技巧,还能深入理解Java NIO的工作原理以及Mina提供的高级网络编程接口。实践...
在本文中,我们将深入探讨如何将...这个开箱即用的方案对于新手开发者来说,是一个很好的学习起点,可以让他们快速掌握如何在Spring Boot环境中运用Mina框架。通过不断实践和优化,可以打造出满足实际需求的稳定系统。