在使用MINA做客户端程序时,发现虽然调用了session.close()方法,通过日志也确实看到当前session已经被关闭了,但未什么客户端程序进程却没有停止呢?即MINA客户端没有根本的关闭。这个现象在版本1和2中都存在。这是MINA的bug吗???其实不然...
我们可以启动2个服务器端,然后用同一个connector实例来连接这2台服务器,通过结果可以发现2个连接是相互独立工作的,及connector和session不是一对一的。
通过查阅API和源代码,我们可以发现这里的connector实际是一个连接管理器,其内部通过一个connectQueue队列同步存储一个连接列表。并在调用connect()方法时,将当前连接请求注册到队列中;同时connector中启动着一个内部的Worker(工作线程)来管理这些连接。当我们关闭某个session之后,只是关闭了某个请求,工作线程其实并没有被关闭,所以出现程序没有停止的现象。
MINA1.1.7
可以通过设置工作超时来关闭连接,当所有的连接都被关闭后worker线程将停止,即connector停止。
connector.setWorkerTimeout(1); //1秒钟(默认超时60秒)
PS:Worker定义在SocketConnector类中,内部直接实现管理
MINA2.0
可以调用connector的dispose()方法。该方法通过调用ExecutorService的shutdown()方法停止业务处理线程,并设置内部disposed标志位标识需要停止连接管理器;Worker线程通过该标识停止。
connector.dispose();
PS: Worker定义在AbstractPollingIoConnector类中,disposed标志在AbstractIoService类中,通过dispose()方法停止ExecutorService并设置disposed标志
分享到:
相关推荐
在本示例中,我们关注的是"Mina客户端",即如何使用Mina库创建一个简单的客户端应用。 标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送...
**Mina客户端示例** Apache Mina是一个高度可扩展的网络通信框架,它为Java应用程序提供了简单的API来处理TCP/IP、UDP和其他协议的网络通信。在这个"Mina客户端示例"中,我们主要关注如何利用Mina框架构建一个...
《Mina开发之客户端详解》 Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用框架,主要用于构建服务器端的网络应用程序。它简化了网络编程的复杂性,提供了基于事件驱动和异步I/O...
**Mina客户端服务器Demo**是基于Apache Mina框架的一个示例项目,主要展示了如何使用Mina进行网络通信的开发。Apache Mina是一个高度可扩展且轻量级的Java框架,主要用于构建高性能、高效率的网络应用程序,如TCP/IP...
本实例将探讨如何使用MINA实现客户端与服务端的通信。 MINA框架是Apache软件基金会的一个项目,它提供了基于NIO(Non-blocking I/O)的网络编程接口。NIO是一种在Java中实现高并发、低延迟I/O操作的方法,特别适合...
《mina客户端服务器简易Demo详解》 Apache Mina(Minimum Asynchronous Network)是一个开源的网络通信框架,它为Java开发者提供了一种简单而高效的方式来构建高性能、高可用性的网络应用程序,如TCP/IP和UDP/IP...
在Mina中,连接是指客户端与服务端之间建立的通信链路。它支持多种传输协议,如TCP/IP(Socket)、UDP(Datagram)等。Mina提供了一种事件驱动的模型,通过IoSession接口来管理连接,包括读写数据、添加监听器、关闭...
Mina 是一个强大的开源框架,主要用于构建网络应用,如服务器和客户端。在Java环境中,它提供了高效的、事件驱动的网络应用程序框架,支持TCP和UDP协议,适用于开发高性能、高并发的网络服务。在这个"mina 长连接 ...
在这个"mina客户端例子"中,我们将探讨如何利用MINA构建一个简单的客户端,实现基于NIO(Non-blocking I/O)的游戏开发和即时通讯工具。 首先,让我们了解NIO。在Java中,传统的I/O模型是阻塞的,这意味着当进行...
标题中提到的"mina2服务端客户端实例"是指使用Apache MINA 2版本创建的一个工作示例,该示例包含了服务端和客户端的完整代码,旨在帮助开发者理解如何在实际项目中运用MINA进行网络通信。通过导入Eclipse这样的集成...
当客户端与服务器建立连接后,如果网络中断,MINA会尝试自动重连。这个过程可能包括设置一个重试策略,如固定延迟重试、指数退避等。如果在重试过程中出现错误或者不当设计,就可能导致死锁。 死锁的常见原因包括:...
MINA不仅支持同步客户端-服务器通信,还支持异步客户端-服务器通信模式。 1. **MINA服务端**:在MINA中,服务端通常被称为Acceptor。它负责监听指定的网络端口,接收客户端的连接请求,并为每个连接创建一个Session...
《MINA Android客户端实现详解》 在Android应用开发中,通信功能是不可或缺的一部分,而MINA(Mina Network Application Framework)作为一个高效的、可扩展的网络应用程序框架,为开发者提供了构建高性能、高可用...
2. **事件驱动**:Mina使用事件驱动架构,通过监听器接口(IoHandler)来处理网络事件,如连接建立、数据接收、连接关闭等。当这些事件发生时,对应的回调方法会被触发。 3. **过滤器链**:Mina的过滤器(Filter)...
5. **事件驱动模型**:MINA采用事件驱动模型,通过监听器和处理器来处理各种网络事件,如连接建立、数据接收、连接关闭等。这些处理器(如`ExceptionHandler`、`MessageReceivedHandler`等)可以自定义实现,以处理...
MINA(Multipurpose Infrastructure for Network Applications)是Apache软件基金会的一个开源项目,提供了一套高度可扩展和高性能的网络应用程序框架,用于构建服务器和客户端应用。它简化了网络编程,特别是TCP/IP...
如果服务器在一段时间内没有收到心跳包,可能会认为客户端已经断开,从而触发相应的处理逻辑,比如关闭连接或者触发重连机制。 在Mina的配置中,开发者可以通过设置Filter链来实现心跳包的处理。例如,可以创建一个...
《mina服务器和客户端实现详解》 Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的网络通信框架,它为开发者提供了构建高性能、高可用性的网络应用程序的基础。在本文中,我们将深入探讨如何利用...
标题中的“练练手,用mina2.0搭建一个nio客户端”表明了本文将探讨如何使用Mina 2.0框架构建一个基于非阻塞I/O(NIO)的客户端应用。Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和...