`
littcai
  • 浏览: 248203 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

如何彻底关闭MINA客户端

阅读更多

      在使用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标志

分享到:
评论
5 楼 huangchao1010 2012-11-20  
服务器端在handler里设置超时就行了,超时就会将客户端的连接给干掉。
4 楼 kunsyliu 2012-10-11  
 

我才接触mina昨天遇到这问题头都大了,还郁闷了好一整天。

看了这篇博客帮助非常大,。

关闭mina客服端,应该还加上:

//Wait for the connection attempt to be finished.
//IoSession session = future.getSession();
session.getCloseFuture().awaitUninterruptibly(); 

        connector.dispose(); //NioSocketConnector

 

3 楼 lindaiyu_1130 2012-09-01  
dispose之后我想再重新启用这个connector,该怎么办呢?
2 楼 kuro_0505 2009-03-06  
这个是关闭客户端的,那如果客户端关闭了之后,能不能让服务端来关闭这个相关的session呢?
1 楼 kuro_0505 2009-03-06  
我也碰到这个问题了,谢谢!

相关推荐

    mina客户端简单代码示例

    在本示例中,我们关注的是"Mina客户端",即如何使用Mina库创建一个简单的客户端应用。 标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送...

    Mina客户端示例

    **Mina客户端示例** Apache Mina是一个高度可扩展的网络通信框架,它为Java应用程序提供了简单的API来处理TCP/IP、UDP和其他协议的网络通信。在这个"Mina客户端示例"中,我们主要关注如何利用Mina框架构建一个...

    Mina开发之客户端

    《Mina开发之客户端详解》 Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用框架,主要用于构建服务器端的网络应用程序。它简化了网络编程的复杂性,提供了基于事件驱动和异步I/O...

    Mina客户端服务器Demo

    **Mina客户端服务器Demo**是基于Apache Mina框架的一个示例项目,主要展示了如何使用Mina进行网络通信的开发。Apache Mina是一个高度可扩展且轻量级的Java框架,主要用于构建高性能、高效率的网络应用程序,如TCP/IP...

    MINA客户端与服务端通信实例

    本实例将探讨如何使用MINA实现客户端与服务端的通信。 MINA框架是Apache软件基金会的一个项目,它提供了基于NIO(Non-blocking I/O)的网络编程接口。NIO是一种在Java中实现高并发、低延迟I/O操作的方法,特别适合...

    mina客户端服务器简易Demo

    《mina客户端服务器简易Demo详解》 Apache Mina(Minimum Asynchronous Network)是一个开源的网络通信框架,它为Java开发者提供了一种简单而高效的方式来构建高性能、高可用性的网络应用程序,如TCP/IP和UDP/IP...

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

    在Mina中,连接是指客户端与服务端之间建立的通信链路。它支持多种传输协议,如TCP/IP(Socket)、UDP(Datagram)等。Mina提供了一种事件驱动的模型,通过IoSession接口来管理连接,包括读写数据、添加监听器、关闭...

    mina 长连接 客户端+服务端

    Mina 是一个强大的开源框架,主要用于构建网络应用,如服务器和客户端。在Java环境中,它提供了高效的、事件驱动的网络应用程序框架,支持TCP和UDP协议,适用于开发高性能、高并发的网络服务。在这个"mina 长连接 ...

    mina客户端例子

    在这个"mina客户端例子"中,我们将探讨如何利用MINA构建一个简单的客户端,实现基于NIO(Non-blocking I/O)的游戏开发和即时通讯工具。 首先,让我们了解NIO。在Java中,传统的I/O模型是阻塞的,这意味着当进行...

    mina2服务端客户端实例,保证能够正常运行

    标题中提到的"mina2服务端客户端实例"是指使用Apache MINA 2版本创建的一个工作示例,该示例包含了服务端和客户端的完整代码,旨在帮助开发者理解如何在实际项目中运用MINA进行网络通信。通过导入Eclipse这样的集成...

    MINA断线重连死锁解决

    当客户端与服务器建立连接后,如果网络中断,MINA会尝试自动重连。这个过程可能包括设置一个重试策略,如固定延迟重试、指数退避等。如果在重试过程中出现错误或者不当设计,就可能导致死锁。 死锁的常见原因包括:...

    mina 同步客户端,异步客户端

    MINA不仅支持同步客户端-服务器通信,还支持异步客户端-服务器通信模式。 1. **MINA服务端**:在MINA中,服务端通常被称为Acceptor。它负责监听指定的网络端口,接收客户端的连接请求,并为每个连接创建一个Session...

    MINA android客户端实现

    《MINA Android客户端实现详解》 在Android应用开发中,通信功能是不可或缺的一部分,而MINA(Mina Network Application Framework)作为一个高效的、可扩展的网络应用程序框架,为开发者提供了构建高性能、高可用...

    Mina 服务端客户端示例程序

    2. **事件驱动**:Mina使用事件驱动架构,通过监听器接口(IoHandler)来处理网络事件,如连接建立、数据接收、连接关闭等。当这些事件发生时,对应的回调方法会被触发。 3. **过滤器链**:Mina的过滤器(Filter)...

    mina框架中socket使用,有服务端和客户端。

    5. **事件驱动模型**:MINA采用事件驱动模型,通过监听器和处理器来处理各种网络事件,如连接建立、数据接收、连接关闭等。这些处理器(如`ExceptionHandler`、`MessageReceivedHandler`等)可以自定义实现,以处理...

    MINA 服务端和客户端demo

    MINA(Multipurpose Infrastructure for Network Applications)是Apache软件基金会的一个开源项目,提供了一套高度可扩展和高性能的网络应用程序框架,用于构建服务器和客户端应用。它简化了网络编程,特别是TCP/IP...

    mina心跳包机制

    如果服务器在一段时间内没有收到心跳包,可能会认为客户端已经断开,从而触发相应的处理逻辑,比如关闭连接或者触发重连机制。 在Mina的配置中,开发者可以通过设置Filter链来实现心跳包的处理。例如,可以创建一个...

    mina服务器和客服端实现

    《mina服务器和客户端实现详解》 Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的网络通信框架,它为开发者提供了构建高性能、高可用性的网络应用程序的基础。在本文中,我们将深入探讨如何利用...

    练练手,用mina2.0搭建一个nio客户端

    标题中的“练练手,用mina2.0搭建一个nio客户端”表明了本文将探讨如何使用Mina 2.0框架构建一个基于非阻塞I/O(NIO)的客户端应用。Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和...

Global site tag (gtag.js) - Google Analytics