From 1377f8b4ce1d9e4d4f965231aa789774cbe5b5ca Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Sun, 26 Sep 2021 12:26:45 +0800 Subject: [PATCH] =?UTF-8?q?fix[zfoo]:=20=E4=BC=98=E9=9B=85=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=9C=8D=E5=8A=A1=E5=99=A8=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?bean=E8=B4=A2=E5=AF=8C=E5=9B=9E=E8=B0=83shutdown=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zfoo/event/EventContext.java | 7 +++---- .../main/java/com/zfoo/net/NetContext.java | 21 +++++++++++-------- .../net/session/manager/ISessionManager.java | 2 -- .../net/session/manager/SessionManager.java | 20 ------------------ .../com/zfoo/net/session/model/Session.java | 11 ++++++---- 5 files changed, 22 insertions(+), 39 deletions(-) diff --git a/event/src/main/java/com/zfoo/event/EventContext.java b/event/src/main/java/com/zfoo/event/EventContext.java index 560d0fa3..70a748f6 100644 --- a/event/src/main/java/com/zfoo/event/EventContext.java +++ b/event/src/main/java/com/zfoo/event/EventContext.java @@ -26,7 +26,6 @@ import org.springframework.context.event.ContextClosedEvent; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.core.Ordered; -import java.lang.reflect.Field; import java.util.concurrent.ExecutorService; /** @@ -49,13 +48,13 @@ public class EventContext implements ApplicationListener, } - public synchronized static void shutdownBefore() { + public synchronized void shutdownBefore() { SchedulerContext.shutdown(); } - public static synchronized void shutdownAfter() { + public synchronized void shutdownAfter() { // 关闭zookeeper的客户端 - NetContext.getConfigManager().getRegistry().shutdown(); - + configManager.getRegistry().shutdown(); // 先关闭所有session - NetContext.getSessionManager().shutdown(); + IOUtils.closeIO(ArrayUtils.listToArray(new ArrayList<>(sessionManager.getClientSessionMap().values()), Session.class)); + IOUtils.closeIO(ArrayUtils.listToArray(new ArrayList<>(sessionManager.getServerSessionMap().values()), Session.class)); // 关闭客户端和服务器 - TcpClient.shutdown(); + AbstractClient.shutdown(); AbstractServer.shutdownAllServers(); // 关闭TaskManager try { - Field field = EventBus.class.getDeclaredField("executors"); + Field field = TaskManager.class.getDeclaredField("executors"); ReflectionUtils.makeAccessible(field); var executors = (ExecutorService[]) ReflectionUtils.getField(field, TaskManager.getInstance()); diff --git a/net/src/main/java/com/zfoo/net/session/manager/ISessionManager.java b/net/src/main/java/com/zfoo/net/session/manager/ISessionManager.java index 5fee942c..762e67a5 100644 --- a/net/src/main/java/com/zfoo/net/session/manager/ISessionManager.java +++ b/net/src/main/java/com/zfoo/net/session/manager/ISessionManager.java @@ -42,6 +42,4 @@ public interface ISessionManager { int getClientSessionChangeId(); - void shutdown(); - } diff --git a/net/src/main/java/com/zfoo/net/session/manager/SessionManager.java b/net/src/main/java/com/zfoo/net/session/manager/SessionManager.java index f21f9842..0b75bbf9 100644 --- a/net/src/main/java/com/zfoo/net/session/manager/SessionManager.java +++ b/net/src/main/java/com/zfoo/net/session/manager/SessionManager.java @@ -110,24 +110,4 @@ public class SessionManager implements ISessionManager { return clientSessionChangeId; } - @Override - public synchronized void shutdown() { - clientSessionMap.values().forEach(it -> { - try { - it.close(); - } catch (Exception e) { - logger.error("关闭[session:{}]发生未知异常", SessionUtils.sessionInfo(it), e); - } - }); - - serverSessionMap.values().forEach(it -> { - try { - it.close(); - } catch (Exception e) { - logger.error("关闭[session:{}]发生未知异常", SessionUtils.sessionInfo(it), e); - } - }); - - logger.info("已关闭客户端和服务器所有的session"); - } } diff --git a/net/src/main/java/com/zfoo/net/session/model/Session.java b/net/src/main/java/com/zfoo/net/session/model/Session.java index 397cc62e..54994588 100644 --- a/net/src/main/java/com/zfoo/net/session/model/Session.java +++ b/net/src/main/java/com/zfoo/net/session/model/Session.java @@ -16,6 +16,7 @@ package com.zfoo.net.session.model; import com.zfoo.protocol.util.StringUtils; import io.netty.channel.Channel; +import java.io.Closeable; import java.util.EnumMap; import java.util.Map; import java.util.Objects; @@ -25,7 +26,7 @@ import java.util.concurrent.atomic.AtomicLong; * @author jaysunxiao * @version 3.0 */ -public class Session { +public class Session implements Closeable { private static final AtomicLong ATOMIC_LONG = new AtomicLong(0); @@ -73,6 +74,11 @@ public class Session { return Objects.hash(sid); } + @Override + public void close() { + channel.close(); + } + public long getSid() { return sid; } @@ -98,7 +104,4 @@ public class Session { return channel; } - public void close() { - channel.close(); - } }