From a65f4318f5f760bfb1a5db06143afcbe564753b3 Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 15 Sep 2024 09:40:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/net/http/HttpServlet.java | 28 +++++----- .../java/org/redkale/net/http/WebSocket.java | 56 ++++++++++++++----- .../redkale/net/http/WebSocketServlet.java | 7 ++- .../org/redkale/net/sncp/SncpRpcGroup.java | 9 ++- 4 files changed, 64 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpServlet.java b/src/main/java/org/redkale/net/http/HttpServlet.java index 46d07fcc1..cdde2fbeb 100644 --- a/src/main/java/org/redkale/net/http/HttpServlet.java +++ b/src/main/java/org/redkale/net/http/HttpServlet.java @@ -5,9 +5,6 @@ */ package org.redkale.net.http; -import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES; -import static org.redkale.asm.Opcodes.*; - import java.io.*; import java.lang.annotation.*; import java.lang.reflect.*; @@ -17,6 +14,8 @@ import java.util.function.*; import java.util.logging.*; import org.redkale.annotation.*; import org.redkale.asm.*; +import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES; +import static org.redkale.asm.Opcodes.*; import org.redkale.boot.*; import org.redkale.net.*; import org.redkale.util.*; @@ -36,16 +35,22 @@ public class HttpServlet extends Servlet // @Deprecated(since = "2.8.0") // public static final int RET_METHOD_ERROR = 1200_0002; // - String _actionSimpleMappingUrl; // 只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如: /json、/createRecord, + + // 只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如: /json、/createRecord, // 不能是/user/** + String _actionSimpleMappingUrl; - String _prefix = ""; // 当前HttpServlet的path前缀 + // 当前HttpServlet的path前缀 + String _prefix = ""; - String _reqtopic; // 根据RestService+MQ生成的值 @since 2.5.0 + // 根据RestService+MQ生成的值 @since 2.5.0 + String _reqtopic; - HashMap _actionmap; // Rest生成时赋值, 字段名Rest有用到 + // Rest生成时赋值, 字段名Rest有用到 + HashMap _actionmap; - private Map.Entry[] mappings; // 字段名Rest有用到 + // 字段名Rest有用到 + private Map.Entry[] mappings; // 这里不能直接使用HttpServlet,会造成死循环初始化HttpServlet private final Servlet authSuccessServlet = @@ -114,8 +119,6 @@ public class HttpServlet extends Servlet if (request.actionEntry != null) { ActionEntry entry = request.actionEntry; if (!entry.checkMethod(request.getMethod())) { - // response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") - // Error")); finish405(request, response); return; } @@ -134,8 +137,6 @@ public class HttpServlet extends Servlet if (request.getRequestPath().startsWith(en.getKey())) { ActionEntry entry = en.getValue(); if (!entry.checkMethod(request.getMethod())) { - // response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + - // ") Error")); finish405(request, response); return; } @@ -153,8 +154,6 @@ public class HttpServlet extends Servlet } } finish404(request, response); - // throw new IOException(this.getClass().getName() + " not found method for URI(" + - // request.getRequestPath() + ")"); } }; @@ -330,7 +329,6 @@ public class HttpServlet extends Servlet NonBlocking non = method.getAnnotation(NonBlocking.class); exeNonBlocking = non != null && non.value(); } - continue; } } } while ((clz = clz.getSuperclass()) != HttpServlet.class); diff --git a/src/main/java/org/redkale/net/http/WebSocket.java b/src/main/java/org/redkale/net/http/WebSocket.java index a325e923d..7b3b2c616 100644 --- a/src/main/java/org/redkale/net/http/WebSocket.java +++ b/src/main/java/org/redkale/net/http/WebSocket.java @@ -17,6 +17,7 @@ import java.util.logging.*; import java.util.stream.Stream; import java.util.zip.*; import org.redkale.annotation.Comment; +import org.redkale.annotation.Nonnull; import org.redkale.convert.Convert; import org.redkale.net.AsyncConnection; import org.redkale.net.http.WebSocketPacket.FrameType; @@ -88,41 +89,65 @@ public abstract class WebSocket { @Comment("WebSocket将延迟发送") public static final int RETCODE_DELAYSEND = 1 << 9; // 512 - WebSocketEngine _engine; // 不可能为空 + // 不可能为空 + @Nonnull + WebSocketEngine _engine; WebSocketReadHandler _readHandler; WebSocketWriteHandler _writeHandler; - InetSocketAddress _sncpAddress; // 分布式下不可为空 + // 分布式下不可为空 + InetSocketAddress _sncpAddress; - AsyncConnection _channel; // 不可能为空 + // 不可能为空 + @Nonnull + AsyncConnection _channel; - String _sessionid; // 不可能为空 + // 不可能为空 + @Nonnull + String _sessionid; - G _userid; // 不可能为空 + // 不可能为空 + @Nonnull + G _userid; - SocketAddress _remoteAddress; // 不可能为空 + // 不可能为空 + @Nonnull + SocketAddress _remoteAddress; - String _remoteAddr; // 不可能为空 + // 不可能为空 + @Nonnull + String _remoteAddr; - Convert _textConvert; // 不可能为空 + // 不可能为空 + @Nonnull + Convert _textConvert; - Convert _binaryConvert; // 可能为空 + // 不可能为空 + @Nonnull + Convert _binaryConvert; - Convert _sendConvert; // 不可能为空 + // 不可能为空 + @Nonnull + Convert _sendConvert; - java.lang.reflect.Type _messageRestType; // 不可能为空 + // 不可能为空 + @Nonnull + java.lang.reflect.Type _messageRestType; - Deflater deflater; // 压缩 + // 压缩 + Deflater deflater; - Inflater inflater; // 解压 + // 解压 + Inflater inflater; long createTime = System.currentTimeMillis(); List delayPackets; - private Map attributes = new HashMap<>(); // 非线程安全 + // 非线程安全 + private Map attributes = new HashMap<>(); private long lastPingTime; @@ -130,7 +155,8 @@ public abstract class WebSocket { long lastSendTime; - boolean initiateClosed; // 收到客户端发送的CLOSE消息 + // 收到客户端发送的CLOSE消息 + boolean initiateClosed; private final AtomicBoolean closed = new AtomicBoolean(); diff --git a/src/main/java/org/redkale/net/http/WebSocketServlet.java b/src/main/java/org/redkale/net/http/WebSocketServlet.java index 89acbb150..3792c0de1 100644 --- a/src/main/java/org/redkale/net/http/WebSocketServlet.java +++ b/src/main/java/org/redkale/net/http/WebSocketServlet.java @@ -81,10 +81,11 @@ public abstract class WebSocketServlet extends HttpServlet implements Resourcabl private final ObjectPool byteArrayPool = ObjectPool.createSafePool(1000, () -> new ByteArray(), null, ByteArray::recycle); - protected Type messageRestType; // RestWebSocket时会被修改 + // RestWebSocket时会被修改 + protected Type messageRestType; - // 同RestWebSocket.single - protected boolean single = true; // 是否单用户单连接 + // 同RestWebSocket.single,是否单用户单连接 + protected boolean single = true; // 同RestWebSocket.liveinterval protected int liveinterval = DEFAILT_LIVEINTERVAL; diff --git a/src/main/java/org/redkale/net/sncp/SncpRpcGroup.java b/src/main/java/org/redkale/net/sncp/SncpRpcGroup.java index bf50abbe1..3c79016e1 100644 --- a/src/main/java/org/redkale/net/sncp/SncpRpcGroup.java +++ b/src/main/java/org/redkale/net/sncp/SncpRpcGroup.java @@ -22,14 +22,17 @@ public class SncpRpcGroup { protected final ReentrantLock lock = new ReentrantLock(); + // 地址 @ConvertColumn(index = 1) - protected String name; // 地址 + protected String name; + // 协议 取值范围: TCP、UDP @ConvertColumn(index = 2) - protected String protocol; // 协议 取值范围: TCP、UDP + protected String protocol; + // 地址列表, 对应 resources->group->node节点信息 @ConvertColumn(index = 3) - protected Set addresses; // 地址列表, 对应 resources->group->node节点信息 + protected Set addresses; public SncpRpcGroup() {}