`

Mina IoSession playload对象为空的问题分析

    博客分类:
  • Java
阅读更多
1.工作中用到mina,需要保存一个会话对象以保存一些数据
2.代码都是照搬的,但是在这个方法
@Override
	public void messageReceived(IoSession session, Object message) throws Exception {
		ClientRequest clientRequest = (ClientRequest) message;
		AppSession appSession = AppSession.getInstance(session);
		if (appSession == null) {
			return;
		}
		GameServer.msgDispatcher.dispatchMsg(appSession, clientRequest);
	}

中做了这么个操作
if (appSession == null) {
     return;
}


3.客户端在创建套接字后,立即发送数据,结果出现了等待的死机现象,一直停留在等待获取数据状态
4.分析了半天定位到了上面那段代码。为什么appSession 为空呢,
public void sessionOpened(IoSession session) throws Exception {
		AppSession appSession = new AppSession(session);
		appSession.holdInIoSession();
		logger.info("a session create from ip {}", session.getRemoteAddress());
	}

这段代码中已经将AppSession 作为playload放入IoSession里了
5.但是就是获取不到,打断点跟踪的时候又可以到值,估计是由于客户端发送数据太快,服务段的put操作没有完成就获取到客户端的数据请求,进入messageReceived方法,所以暂时在客户端创建连接后停100毫秒,服务端就没有遇到类似的问题了
分享到:
评论

相关推荐

    mina传输对象的示例

    在标题和描述中提到的“mina传输对象的示例”指的是如何在Mina框架下处理和传输自定义的数据对象。Mina允许开发者通过事件驱动和异步I/O模型来高效地构建网络服务。 Mina的核心组件包括: 1. **Session**: 表示...

    Mina断包,粘包处理(完整实例,有客户端,服务端)

    在Java开发中,Mina(Java Minimal Asynchronous Network Engine)是一个强大的网络编程框架...通过分析Android-Mina-master项目中的代码,我们可以学习到如何在实际应用中解决这些问题,提高网络通信的可靠性和效率。

    mina自定义编解码器详解

    在mina框架中,编解码器(Codec)扮演着至关重要的角色,它负责将应用层的数据转换为网络传输的字节流,以及将接收到的字节流还原为应用程序可以理解的对象。对于初学者来说,理解和编写自定义的编解码器可能会遇到...

    Mina2.0框架源码剖析.pdf

    Mina2.0框架源码剖析 Mina2.0是一个基于Java的网络应用框架,提供了一个简洁、灵活的API,帮助开发者快速构建高性能的网络应用程序。下面是Mina2.0框架源码剖析的相关知识点: 一、Mina2.0框架概述 Mina2.0是一个...

    ApacheMINA传递对象实例[借鉴].pdf

    这使得这些对象能够被转换为字节流在网络中传输,然后在另一端被还原为原来的对象形式。 序列化是Java提供的一种将对象转换为字节流,以便存储或在网络中传输的技术。`serialVersionUID`字段是一个用于版本控制的...

    minaDemo的实例

    "MinaDemo"项目可能还包括自定义的编码器和解码器,例如`ProtocolEncoder`和`ProtocolDecoder`,用于将业务数据转化为适合网络传输的格式,并在接收到网络数据时还原成原始信息。 此外,MINA支持事件驱动模型,通过...

    mina客户端简单代码示例

    我们需要实现ProtocolDecoder和ProtocolEncoder接口,定义如何将输入流转化为对象,以及如何将对象转化为输出流。 4. **创建Handler**:编写一个实现了IoHandler接口的类,该接口包含一个sessionOpened()、message...

    mina连接 mina心跳连接 mina断线重连

    通过分析这些文件,可以更具体地了解如何在实际项目中应用Mina的连接、心跳和断线重连机制。不过,具体的实现细节和优化策略需结合代码来进一步学习和理解。 总结起来,Apache Mina提供了一套强大的网络通信框架,...

    mina 断包,粘包问题解决

    总的来说,Apache Mina为解决网络通信中的断包和粘包问题提供了强大的工具。通过理解和应用mina_optimize代码,你可以更好地掌握如何在实际项目中规避这些问题,提升网络通信的稳定性和可靠性。在实际开发中,结合...

    mina的高级使用,mina文件图片传送,mina发送文件,mina报文处理,mina发送xml和json

    Apache Mina是一个开源的网络通信应用框架,主要应用于Java平台,它为高性能、高可用性的网络应用程序提供了基础架构。在本文中,我们将深入探讨Mina的高级使用,特别是在文件图片传送、文件发送、XML和JSON报文处理...

    Mina框架入门介绍

    Mina的事件驱动特性体现在其事件模型中,它将网络通信过程分解为几个关键阶段,如连接建立、数据传输、关闭连接和Idle事件。`IoFilter`是Mina事件处理链的一部分,允许开发者在数据传输前或后添加额外的处理逻辑,...

    Mina2源码分析

    本文旨在深入剖析Mina2的核心部分,帮助读者更好地理解和掌握Mina2的工作原理及其在实际开发中的应用。 #### 核心包介绍 Mina2的核心组成部分主要包括以下四个包: 1. **org.apache.mina.core.service**:包含服务...

    mina源代码学习提供下载

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专为开发高性能和高度可扩展的网络应用程序而设计。MINA 提供了一种抽象层,允许开发者远离底层的Socket编程,专注于业务逻辑...

    Mina通信框架应用示例

    MINA提供序列化机制,可以直接将对象作为消息传递,无需手动转换为字节流。这需要实现Serializable接口,并使用ObjectEncoder和ObjectDecoder来编码和解码对象。 5. 扩展学习 除了基础应用,MINA还支持更复杂的...

    apache-mina-2.0.4.rar_apache mina_mina

    6. **Transport Layer**:Mina支持多种传输层实现,如TCP、UDP等,这些都抽象为IoAcceptor和IoConnector接口,方便开发者使用。 深入研究源码,你可能会关注以下方面: - **mina-core**模块:这是Mina的核心库,...

    MINA断线重连死锁解决

    当我们遇到"MINA断线重连死锁解决"的问题时,通常涉及到的是网络连接的稳定性和并发处理的复杂性。 MINA框架提供了非阻塞I/O模型,允许处理大量并发连接。然而,在某些情况下,特别是在断线重连的机制中,可能会...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    最后,“MinaDemo”可能是Mina框架的一个示例项目,你可以通过运行和分析这个项目,进一步掌握Mina的实战应用。 总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在...

    Mina2.0快速入门与源码剖析.docx

    Mina2.0 快速入门与源码剖析 Mina2.0 是一个基于 Java 的网络应用框架,提供了一个高效、可扩展的网络通信解决方案。下面是 Mina2.0 快速入门与源码剖析的知识点总结: 一、Mina2.0 快速入门 Mina2.0 的快速入门...

Global site tag (gtag.js) - Google Analytics