From 38ca86bed60ddef4de931491e7b2e19db13ac972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Tue, 23 Jun 2015 15:55:06 +0800 Subject: [PATCH] --- .../wentch/redkale/net/http/WebSocketEngine.java | 13 ++++++++++--- .../wentch/redkale/net/http/WebSocketServlet.java | 3 +-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/com/wentch/redkale/net/http/WebSocketEngine.java b/src/com/wentch/redkale/net/http/WebSocketEngine.java index cbf433be8..3d8ebea35 100644 --- a/src/com/wentch/redkale/net/http/WebSocketEngine.java +++ b/src/com/wentch/redkale/net/http/WebSocketEngine.java @@ -15,14 +15,21 @@ import java.util.concurrent.*; */ public final class WebSocketEngine { - private String engineid; + private static final Map globals = new ConcurrentHashMap<>(); + + private final String engineid; private final Map containers = new ConcurrentHashMap<>(); - WebSocketEngine() { + static WebSocketEngine create(String engineid) { + WebSocketEngine engine = globals.get(engineid); + if (engine != null) return engine; + engine = new WebSocketEngine(engineid); + globals.put(engineid, engine); + return engine; } - void setEngineid(String engineid) { + private WebSocketEngine(String engineid) { this.engineid = engineid; } diff --git a/src/com/wentch/redkale/net/http/WebSocketServlet.java b/src/com/wentch/redkale/net/http/WebSocketServlet.java index 717ba9449..e91453ec2 100644 --- a/src/com/wentch/redkale/net/http/WebSocketServlet.java +++ b/src/com/wentch/redkale/net/http/WebSocketServlet.java @@ -37,11 +37,10 @@ public abstract class WebSocketServlet extends HttpServlet { @Resource private WebSocketNodeService nodeService; - protected final WebSocketEngine engine = new WebSocketEngine(); + protected final WebSocketEngine engine = WebSocketEngine.create(this.getClass().getName() + "-" + Arrays.toString(this.getClass().getAnnotation(WebServlet.class).value())); @Override public void init(Context context, AnyValue conf) { - engine.setEngineid(this.getClass().getName() + "-" + Arrays.toString(this.getClass().getAnnotation(WebServlet.class).value())); if (nodeService != null) { nodeService.addWebSocketEngine(engine); nodeService.initUserNodes();