mina

MINA(2)------快速开发Demo

烈酒焚心 提交于 2020-01-08 14:21:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 基础掌握:MINA整体体系结构分析 一.telnet模拟客户端 通过Mina创建一个服务端程序,用于监听客户端的连接,并接受客服端发送过来的数据,当数据是exit,那么服务端关闭,客服端通过telnet来模拟。 1、准备jar包: (1)手动引入: (2)添加如下代码到pom.xml中<dependencies></dependencies>标签内: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.rxtx</groupId> <artifactId>rxtx</artifactId> <version>2.1.7</version> <scope>provided</scope> </dependency> <dependency>

MINA(1)-----体系结构分析

时光怂恿深爱的人放手 提交于 2020-01-08 14:06:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一.MINA简介及概述 1、Mina的介绍 Mina是Apche开发的一个基于NIO的网络开源应用框架,是非阻塞模式,使用它编写程序时,可以专注于业务处理,而不用过于关心IO操作。不论应用程序采用什么协议(TCP、UDP)或者其它的,Mina提供了一套公用的接口,来支持这些协议。目前可以处理的协议有:HTTP, XML, TCP, LDAP, DHCP, NTP, DNS, XMPP, SSH, FTP... 。从这一点来说,Mina不仅仅是一个基于NIO的框架,更是一个网络传输层协议的实现。 2、网络分层结构 OSI的7层从上到下分别是:(7)应用层 (6)表示层 (5)会话层 (4)传输层 (3)网络层(2)数据链路层(1)物理层 其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。 3、Mina在应用程序中处于什么样的位置? 主要屏蔽了网络通信的一些细节,对socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信,常常用于游戏的开发,中间件等服务端程序。 二.MINA设计架构 1、MINA整体架构 2、MINA各种组件 上面这个图说明了Mina的处理大致流程。从这个图上也可以看出,大致包括了3个部分: IoService

Mina源码阅读笔记(七)—Mina的拦截器FilterChain

余生颓废 提交于 2020-01-08 13:34:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接上一篇 《异步IO实现IoFuture》 Filter 我们很熟悉,在 Mina 中, filter chain 的用法也类似于 Servlet 的 filters ,这种拦截器的设计思想能够狠轻松的帮助我们实现对资源的统一处理。我们先大致连接下 mina 中的 filter 能给我们带来什么。 LoggingFilter logs all events and requests. ProtocolCodecFilter converts an incoming ByteBuffer into message POJO and vice versa. CompressionFilter compresses all data. SSLFilter adds SSL - TLS - StartTLS support. and many more! 当然这中间最实用,而且源码篇幅最多的就是对 codec 的拦截器,这部分的应用就是可以实现自定义的编码器和解码器,并附上自定义的协议来进行通信。这部分的应用可以看: 《 Mina实现自定义协议的通信 》 在Mina源码中,对filter的描述主要分两部分,org.apache.mina.core.filterchain以及org.apache.mina.filter.

Mina源码阅读笔记(五)—Mina对连接的操作IoSession

*爱你&永不变心* 提交于 2020-01-08 13:34:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接上一篇 《Mina的连接IoConnector》 IoSession 是 Mina 管理两端的一个重要部分,也是 Mina 的核心, Session 具有了生命周期的概念,它的生命周期和连接时紧密相关的,这点在后面的介绍中会涉及。另外,好像 hibernate 中也有 session 也有生命周期(真的是好久没有用了,连 hibernate 有里 session 是干嘛的都想不起来了)。 在读源码之前,我们还是先了解下IoSession的作用和一些基本概念。IoSession的主要作用有如下一些: l 管理连接。注意,这里的管理连接并不是直接去控制我们上次讲的最底层的连接 acceptor 和 connector 。如果 acceptor 和 connector 建立的一条管道,那 session 就是在管道内的管理者,他是没有办法将管道对半拆分开的,他只能从内部阻断两边的通信。管理连接还有部分就是可以配置缓冲区的大小,闲置时间等等。 l 存储信息。和 web 里的 session 一样,这里的 session 也有存储 attribute 的功能,不过一般来说,这里存储的都是和连接有关的东西,并不会像 web 开发一样存一些业务上的东西。 l 驱动读写操作。我不知道用驱动这个词是否合适,那个例子来说,

mina read方法出现BufferUnderflowException异常的解决办法

[亡魂溺海] 提交于 2020-01-08 13:34:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 现象: 先连续发几十个很小很小的包(<10 byte) 再突然发一个大小64byte的包 这时你会发现mina就会出现以下错误 java.nio.BufferUnderflowException at java.nio.HeapByteBuffer.get(Unknown Source) at org.apache.mina.core.buffer.AbstractIoBuffer.get(AbstractIoBuffer.java:419) at org.apache.mina.core.buffer.AbstractIoBuffer.get(AbstractIoBuffer.java:827) at com.labox.common.net.ProtocolHandler.messageReceived(ProtocolHandler.java:81) at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:752) at org.apache.mina.core.filterchain.DefaultIoFilterChain

IoBuffer和ByteBuffer

﹥>﹥吖頭↗ 提交于 2020-01-08 13:33:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近在做通信和传输的项目,大量的使用 NIO 和 Mina ,虽然之前一直对这部分比较关注,但是还没有好好的总结一下这方面的内容。今天想写点儿 NIO 里最基本的一个类 ByteBuffer 。至于 Mina 中的 IoBuffer ,我们可以先看 Mina API 中的描述: A byte buffer used by MINA applications. This is a replacement for ByteBuffer. Please refer to ByteBuffer documentation for preliminary usage 。 当然,接下去也有写到: MINA does not use NIO ByteBuffer directly for two reasons ,至于这 Two Reasons ,我们将在后面的比较中展开。 ByteBuffer 继承了 Buffer ,对 Buffer 的理解可以说是 NIO 的入门。在 Buffer 中有 4 个重要的 Attributes : Capacity: the capacity is set when the buffer is created and can never be changed 。 Limit: the

Apache MINA --- [简易入门]

为君一笑 提交于 2020-01-08 13:33:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Apache MINA是一个网络应用程序框架,它用来帮助我们轻松的建立高性能的,高可扩展的网络应用程序.它为各种传输(比如TCP/IP,UDP/IP)提供了抽 象的,事件驱动的,异步的API.它也常常被被称作"NIO框架库","客户服务框架库","网络套接字库" 使用MINA的必要条件: MINA 2.0.7 Core JDK 1.5 + SLF4J 1.3.0 +(确保使用正确的SLF4J版本来匹配你的日志框架,如:slf4j-log4j12.jar 和 log4j-1.3.x.jar不能一起工作) *SLF4J:简单日志门面,它允许你搭配使用任意的日志框架并提供统一的对外接口,它使用了静态绑定,这意味着对应每一个日志框架都有一个对应的JAR.如下所示: Logging framework Required JARs Log4J 1.2.x slf4j-api.jar, slf4j-log4j12.jar** Log4J 1.3.x slf4j-api.jar , slf4j-log4j13.jar java.util.logging slf4j-api.jar, slf4j-jdk14.jar** Commons Logging slf4j-api.jar , slf4j-jcl.jar 注意: 1

Mina源码阅读笔记(三)-Mina的连接IoAccpetor

一曲冷凌霜 提交于 2020-01-08 13:27:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接着上篇 《IoBuffer的封装》 . 其实在 mina 的源码中, IoService 可以总结成五部分 service 责任、 Processor 线程处理、 handler 处理器、接收器和连接器,分别对应着 IoService 、 IoProcessor 、 IoHandler 、 IoAcceptor 和 IoConnector 。在代码的中有如下包跟 IoService 关系密切: org.apache.mina.core.service org.apache.mina.transport.* org.apache.mina.core.polling 这个包主要是实现了轮询策略 其中 core.service 包中主要定义了上面五个部分的接口,以及 IoHandler 和 IoProcessor 的实现( Handler 是一种常见的设计模式,具体的业务其实并没有多少,只是在结构上将层次划分的更清楚。 Processor 是 mina 内部定义的接口,一般不对外使用,用 mina 官方的话,主要performs actual I/O operations for IoSession. 这一部分我想放在IoSession中来讲)。而在 transport 包中实现了具体的连接方式,当然

Mina源码阅读笔记(二)- IoBuffer的封装

筅森魡賤 提交于 2020-01-08 13:27:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一篇 《整体解读》 的延续。。 在阅读 IoBuffer 源码之前,我们先看 Mina 对 IoBuffer 的描述: A byte buffer used by MINA applications. This is a replacement for ByteBuffer. 这是一个对 ByteBuffer 的 replacement ,同样是用作缓冲区,做内容的切换和承载的容器,为什么要用重新封装 ByteBuffer , MINA 是这么给出解释的 Two Reasons : l It doesn't provide useful getters and putters l It is difficult to write variable-length data due to its fixed capacity 用过 ByteBuffer 的人可能经常会遇到BufferOverflowException这样的异常,原因是 buffer 在初始化 allocate 之后就不能再自动的改变大小了,如果项目很规整,约定的很好,那可能不太会出意外,怕就怕项目一大,好多东西就乱套了。所以在阅读 IoBuffer 源码的时候,我们会着重看它和 ByteBuffer 之间的差异。另外一点,就是 IoBuffer

Apache MINA框架入门

落花浮王杯 提交于 2020-01-08 13:26:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> MINA的官方API http://mina.apache.org/mina-project/gen-docs/latest-2.0/apidocs/index.html 说明 NIO API是在Java 1.4引入的。MINA是基于NIO编写的。首先要了解NIO与BIO的概念以及区别,NIO代表非阻塞IO,BIO代表着阻塞式IO。具体细节请百度。。。 MINA是一个简单但功能齐全的网络应用框架(其实已经被NettyPK掉了,但都是一类型的东西,很多东西相通的,因为我们单位在用MINA所以优先看这个)。下载地址:http://mina.apache.org/downloads-mina.html 或者在maven中添加: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> <type>jar.sha256</type> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> <