mina

Mina出现问题:Don't know how to handle message of type 'java.lang.String'

限于喜欢 提交于 2020-02-27 04:48:00
Mina在做心跳实验时,客户端出现java.lang.IllegalStateException: Don't know how to handle message of type 'java.lang.String'. Are you missing a protocol encoder? 帖子 https://blog.csdn.net/xiaoborui20110806/article/details/41075075 中说mina不知道如何处理string,要在connector增加一个ProtocolCodecFilter,我的客户端源代码: public class KeepAliveMessageFactoryImpl implements KeepAliveMessageFactory { Logger logger = LoggerFactory.getLogger(this.getClass()); /** 心跳包内容 刚好和服务器相反*/ private static final String CLIENTHEARTBEATREQUEST = "1112";//客户端发 private static final String CLIENTHEARTBEATRESPONSE = "1111";//客户端收的服务端信息 // 原文链接:https://blog

mina错误---java.nio.InvalidMarkException

断了今生、忘了曾经 提交于 2020-02-25 22:02:04
原来项目是从maven中搜索出来的mina的client-server版本,可以TCP正常工作,后来又用到了串口,发现当串口发送数据时出现:java.lang.AbstractMethodError: org.apache.mina.transport.serial.SerialSessionImpl$SerialIoProcessor.write(Lorg/apache/mina/core/session/IoSession;Lorg/apache/mina/core/write/WriteRequest;),根据这个 帖子 所说,知道是版本不对的原因,所以删除了client-server版本,下了mfz-rxtx-2.2-20081207-win-x64,将rxtxParallel/rxtxSerial.dll放到windows/system32下,将RXTXcomm.jar放到jkd/jre/lib/ext/下,同时在项目中引入rxtxcomm.jar,还做如下处理: pom.xml从Maven中导mina-transport-serial 2.1.3时总是会将mina-integration-beans依赖导入,而它又用到了log4j低版本,而我的springboot项目中已经用到了高版本的log4j,当将低版本log4j和mina-integration

Java NIO框架Mina、Netty、Grizzly介绍与对比

痞子三分冷 提交于 2020-02-25 18:13:32
Mina Mina(Multipurpose Infrastructure for Network Applications) 是 Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 JavaNIO 技术的 TCP/UDP 应用程序开发、串口通讯程序,Mina 所支持的功能也在进一步的扩展中。目前,正在使用Mina的应用包括:Apache Directory Project、AsyncWeb、AMQP(Advanced MessageQueuing Protocol)、RED5 Server(Macromedia? FlashMedia RTMP)、ObjectRADIUS、 Openfire等等。 Netty Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。也就是说,Netty是一个NIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端。它极大简化了网络编程,如TCP和UDP套接字服务器。 Grizzly Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各种问题。使用JAVANIO作为基础,并隐藏其编程的复杂性。容易使用的高性能的API。带来非阻塞socketd到协议处理层

netty和mina的比较

十年热恋 提交于 2020-01-24 18:51:09
netty和mina的比较 - Lim2x的专栏 - 博客频道 - CSDN.NET netty和mina的比较 mina比netty出现的早,都是 Trustin Lee 的作品; mina将内核和一些特性的联系过于紧密, 使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降 ;netty解决了这个设计问题; netty的文档更清晰,很多mina的特性在netty里都有; netty更新周期更短,新版本的发布比较快; 它们的架构差别不大,mina靠apache生存,而netty靠jboss,和jboss的结合度非常高,netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi); netty比mina使用起来更简单,netty里你可以自定义的处理upstream events 或/和 downstream events,可以使用decoder和encoder来解码和编码发送内容; netty和mina在处理UDP时有一些不同,netty将UDP无连接的特性暴露出来;而mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,而要netty做到这一点比较困难。 来源: https://www.cnblogs.com/lexus/archive/2012/03/29/2422602

Mina、Netty线程模型

被刻印的时光 ゝ 提交于 2020-01-22 15:25:10
Reactor线程模型 Reactor是反应堆的意思,Reactor模式即Dispatcher模式,服务器程序处理传入的多路请求,将他们同步分派给各请求对应的处理线程。 Reactor有两个关键角色: Reactor Reactor在一个单独线程中运行,负责监听和分发事件,将请求事件分发给处理线程来对IO事件作出反应。 Handlers 处理程序执行IO事件完成响应的事件操作。 根据Reactor和Handler数量的不同,Reactor模型有3个变种。 单Reactor单线程 单Reactor多线程 主从Reactor多线程 主从Reactor多线程包含MainReactor和SubReactor。MainReactor负责接收请求,并转发给SubReactor,SubSReactor负责相应通道的读写请求。非IO请求的任 务直接写入工作队列,并等待Worker Thread处理。 Mina线程模型 在MINA中,有三种非常重要的线程:Acceptor thread、Connector thread、I/O processor thread。 Acceptor thread :这个线程用于TCP服务器接收新的连接,并将连接分配到I/O processor thread,由I/O processor thread来处理IO操作

mina IoBuffer 常用方法

别说谁变了你拦得住时间么 提交于 2020-01-15 21:10:05
Limit(int) 如果position>limit, position = limit,如果mark>limit, 重置mark Mark() 取当前的position的快照标记mark Reset() 恢复position到先前标记的mark Clear() limit=capacity , position=0,重置mark,但是不清空数据,为了从头开始put做准备,其实就是清空数据,因为你put就覆盖了原来的数据 Rewind() position=0,重置mark,一系列写操作后,为了从头开始get做准备,和clear()有用途上的区别,他大部分是用来从头开始读取,而clear是大部分用来重头开始填充,就是清理的意思 Flip() limit=position , position=0,重置mask,为了将buf写出做好准备,一般是结束buf操作,将buf写入输出流时调用,这个必须要调用,否则极有可能position!=limit,导致position后面没有数据,每次写入数据到输出流时,必须确保position=limit。 Remaining() 返回limit-position,返回缓冲器中的剩余字节 Wrap(byte[]) 组装到新的buffer,capacity=limit=byte[].length,position=0 重置mark Slice()

springboot整合mina

匆匆过客 提交于 2020-01-14 08:48:10
1、hello world maven引入jar包 <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.1.3</version> </dependency> ①、server端 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.LineDelimiter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

minMINA(5)------MINA框架中的Serial串口通讯

◇◆丶佛笑我妖孽 提交于 2020-01-08 16:22:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> MINA作为优秀的网络应用开发框架,也集成了关于串口通讯的开发,其集成使用的为RXTX串口开发框架,RXTX为各操作系统下的兼容javax.comm串口通讯包API的实现,若不甚了解或遇安装问题请参考我另一篇博文: http://blog.csdn.net/cheng157507947/article/details/43764623 由于我原先使用过RXTX做过串口开发测试,环境并无问题,windows7 64位下创建了两个虚拟串口用于串口调试,linux下也是使用xgcom串口调试工具,其环境问题不在赘述。 MINA官网中有对Serial Transport的大致说明和样例,可参考: http://mina.apache.org/mina-project/userguide/ch6-transports/serial-transport.html(一些需要注意的问题官网中也有解释) 在开发测试之前,除RXTX环境外,需知在MINA提供的2.0.9的基础包中并不包含Serial开发包,在上述连接中已有标明,并已提供了下载地址,开发环境中需加入mina-transport-serial jar。 此外MINA框架使用slf4j,在不做任何处理的情况下会报出 SLF4J: Failed to load class

minMINA(4)------用手机通讯APP与MINA服务器进行简单通讯代码集成springboot(非WEB)

一笑奈何 提交于 2020-01-08 16:04:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一帖的代码基础上集成spring boot,具体修改的地方: 1)myhandler.java文件中 @Component public class MyHandler extends IoHandlerAdapter 2) MinaServer.java文件中 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class MinaServer implements ApplicationRunner { static int PORT=7080; //Mina三个主要的部分之一是IoService,其中服务器端实现IoService的是IoAcceptor,客户端实现IoService的是IoConnector //IoAcceptor和IoConnector都分别有实现TCP/IP,UDP/IP及虚拟机管道通讯的子接口 static IoAcceptor accept = null; // AbstractIoService 是IoService接口的适配层,是一个abstact class // AbstractIoAcceptor 也是一个适配器,是一个 abstactr class

MINA(3)------用手机通讯APP与MINA服务器进行简单通讯代码

风格不统一 提交于 2020-01-08 15:22:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 服务器端主程序及IoHandler业务程序: public class MinaServer { static int PORT=7080; //Mina三个主要的部分之一是IoService,其中服务器端实现IoService的是IoAcceptor,客户端实现IoService的是IoConnector //IoAcceptor和IoConnector都分别有实现TCP/IP,UDP/IP及虚拟机管道通讯的子接口 static IoAcceptor accept = null; // AbstractIoService 是IoService接口的适配层,是一个abstact class // AbstractIoAcceptor 也是一个适配器,是一个 abstactr class ,只不过是继承自AbstarctIoService // IoHandler是mina的三个主要部分之一,这主要定义了session相关的接口(create,open,status,idle),异常(exceptionCaught)及数据发送和接收接口(messageReceive,messageSend) // IoHandlerAdapter是一个适配器,也是一个abstract class ,实现了IoHandler的接口