This is an automated email from the ASF dual-hosted git repository.

mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a158adf3 [ISSUE #4847] HTTPS/(m)TLSv1.3 support for HTTP Admin Server 
(#4848)
6a158adf3 is described below

commit 6a158adf344cb525199bee58a5987031e36f7f4f
Author: Pil0tXia <[email protected]>
AuthorDate: Sun Jun 2 20:30:50 2024 +0800

    [ISSUE #4847] HTTPS/(m)TLSv1.3 support for HTTP Admin Server (#4848)
    
    * Move admin port to http configs
    
    * Refactor AdminServer to own independent configuration
    
    * Support TLS/SSL for AdminServer
    
    * Add default configs
    
    * Rename jks file to a shorter name
    
    * Add one line of comment
    
    * Fetch current version
---
 .../org/apache/eventmesh/common/Constants.java     |   2 +
 .../common/utils/ConfigurationContextUtil.java     |   3 +-
 .../config/samples/eventmesh_v1_runtime.yaml       |   1 -
 eventmesh-runtime/conf/admin-server.jks            | Bin 0 -> 2808 bytes
 eventmesh-runtime/conf/eventmesh.properties        |  24 +++++-
 .../admin/handler/v2/ConfigurationHandler.java     |   3 +-
 .../eventmesh/runtime/boot/AbstractHTTPServer.java |  41 +++-------
 .../runtime/boot/AbstractRemotingServer.java       |  51 +++---------
 .../runtime/boot/EventMeshAdminBootstrap.java      |  22 +++++-
 .../runtime/boot/EventMeshAdminServer.java         |  88 ++++++++++++++++-----
 .../runtime/boot/EventMeshGrpcBootstrap.java       |  11 +--
 .../runtime/boot/EventMeshHTTPServer.java          |  66 +---------------
 .../runtime/boot/EventMeshHttpBootstrap.java       |  15 ++--
 .../eventmesh/runtime/boot/EventMeshServer.java    |  81 ++++++-------------
 .../runtime/boot/EventMeshTcpBootstrap.java        |  12 +--
 .../runtime/boot/HTTPThreadPoolGroup.java          |  51 +++---------
 .../eventmesh/runtime/boot/SSLContextFactory.java  |  25 +++---
 .../configuration/EventMeshAdminConfiguration.java |  61 ++++++++++++++
 .../configuration/EventMeshGrpcConfiguration.java  |   3 -
 .../configuration/EventMeshHTTPConfiguration.java  |   4 -
 .../configuration/EventMeshTCPConfiguration.java   |   3 -
 .../http/processor/AdminMetricsProcessor.java      |   6 +-
 .../runtime/boot/EventMeshServerTest.java          |   1 -
 .../EventMeshGrpcConfigurationTest.java            |   1 -
 .../EventMeshHTTPConfigurationTest.java            |   1 -
 .../EventMeshTCPConfigurationTest.java             |   1 -
 .../src/test/resources/configuration.properties    |   2 -
 27 files changed, 259 insertions(+), 320 deletions(-)

diff --git 
a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java 
b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
index 97286f096..2460129e7 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
@@ -200,6 +200,8 @@ public class Constants {
 
     public static final String GRPC = "GRPC";
 
+    public static final String ADMIN = "ADMIN";
+
     public static final String OS_NAME_KEY = "os.name";
 
     public static final String OS_WIN_PREFIX = "win";
diff --git 
a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/ConfigurationContextUtil.java
 
b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/ConfigurationContextUtil.java
index 861788899..fede64d65 100644
--- 
a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/ConfigurationContextUtil.java
+++ 
b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/ConfigurationContextUtil.java
@@ -17,6 +17,7 @@
 
 package org.apache.eventmesh.common.utils;
 
+import static org.apache.eventmesh.common.Constants.ADMIN;
 import static org.apache.eventmesh.common.Constants.GRPC;
 import static org.apache.eventmesh.common.Constants.HTTP;
 import static org.apache.eventmesh.common.Constants.TCP;
@@ -36,7 +37,7 @@ public class ConfigurationContextUtil {
 
     private static final ConcurrentHashMap<String, CommonConfiguration> 
CONFIGURATION_MAP = new ConcurrentHashMap<>();
 
-    public static final List<String> KEYS = Lists.newArrayList(HTTP, TCP, 
GRPC);
+    public static final List<String> KEYS = Lists.newArrayList(HTTP, TCP, 
GRPC, ADMIN);
 
     /**
      * Save http, tcp, grpc configuration at startup for global use.
diff --git a/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml 
b/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
index fc640aa63..590928ca9 100644
--- a/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
+++ b/eventmesh-operator/config/samples/eventmesh_v1_runtime.yaml
@@ -41,7 +41,6 @@ data:
     # HTTP Admin Server
     eventMesh.server.admin.http.port=10106
     ########################## eventMesh tcp configuration 
############################
-    eventMesh.server.tcp.enabled=true
     eventMesh.server.tcp.readerIdleSeconds=120
     eventMesh.server.tcp.writerIdleSeconds=120
     eventMesh.server.tcp.allIdleSeconds=120
diff --git a/eventmesh-runtime/conf/admin-server.jks 
b/eventmesh-runtime/conf/admin-server.jks
new file mode 100644
index 000000000..92deb897a
Binary files /dev/null and b/eventmesh-runtime/conf/admin-server.jks differ
diff --git a/eventmesh-runtime/conf/eventmesh.properties 
b/eventmesh-runtime/conf/eventmesh.properties
index 4984181ca..9c2e5ee0d 100644
--- a/eventmesh-runtime/conf/eventmesh.properties
+++ b/eventmesh-runtime/conf/eventmesh.properties
@@ -24,11 +24,9 @@ eventMesh.sysid=0000
 eventMesh.server.tcp.port=10000
 eventMesh.server.http.port=10105
 eventMesh.server.grpc.port=10205
-# HTTP Admin Server
 eventMesh.server.admin.http.port=10106
 
-########################## EventMesh TCP Configuration 
##########################
-eventMesh.server.tcp.enabled=true
+########################## EventMesh Network Configuration 
##########################
 eventMesh.server.tcp.readerIdleSeconds=120
 eventMesh.server.tcp.writerIdleSeconds=120
 eventMesh.server.tcp.allIdleSeconds=120
@@ -64,10 +62,30 @@ eventMesh.server.retry.plugin.type=default
 eventMesh.server.gracefulShutdown.sleepIntervalInMills=1000
 eventMesh.server.rebalanceRedirect.sleepIntervalInMills=200
 
+# TLS
+eventMesh.server.useTls.enabled=false
+eventMesh.server.ssl.protocol=TLSv1.1
+eventMesh.server.ssl.cer=sChat2.jks
+eventMesh.server.ssl.pass=sNetty
+
 # ip address blacklist
 
eventMesh.server.blacklist.ipv4=0.0.0.0/8,127.0.0.0/8,169.254.0.0/16,255.255.255.255/32
 eventMesh.server.blacklist.ipv6=::/128,::1/128,ff00::/8
 
+########################## EventMesh HTTP Admin Configuration 
##########################
+# thread pool
+eventMesh.server.admin.threads.num=2
+
+# TLS
+eventMesh.server.admin.useTls.enabled=false
+eventMesh.server.admin.ssl.protocol=TLSv1.3
+eventMesh.server.admin.ssl.cer=admin-server.jks
+eventMesh.server.admin.ssl.pass=eventmesh-admin-server
+
+# ip address blacklist
+eventMesh.server.admin.blacklist.ipv4=0.0.0.0/8,127.0.0.0/8,169.254.0.0/16,255.255.255.255/32
+eventMesh.server.admin.blacklist.ipv6=::/128,::1/128,ff00::/8
+
 ########################## EventMesh Plugin Configuration 
##########################
 # storage plugin
 eventMesh.storage.plugin.type=standalone
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
index 1c149ca52..234e0e79c 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java
@@ -27,6 +27,7 @@ import 
org.apache.eventmesh.runtime.common.EventMeshHttpHandler;
 import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
 import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
 import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration;
+import org.apache.eventmesh.runtime.constants.EventMeshVersion;
 import org.apache.eventmesh.runtime.util.HttpRequestUtil;
 
 import java.lang.reflect.Field;
@@ -126,7 +127,7 @@ public class ConfigurationHandler extends 
AbstractHttpHandler {
             eventMeshTCPConfiguration,
             eventMeshHTTPConfiguration,
             eventMeshGrpcConfiguration,
-            "v1.10.0-release" // TODO get version number after merging 
https://github.com/apache/eventmesh/pull/4055
+            EventMeshVersion.getCurrentVersionDesc()
         );
         String json = 
JSON.toJSONString(Result.success(getConfigurationResponse), filters.toArray(new 
Filter[0]));
         writeJson(ctx, json);
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
index 97f05a876..3fcca5183 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
@@ -86,6 +86,8 @@ import io.netty.handler.timeout.IdleStateEvent;
 import io.netty.util.ReferenceCountUtil;
 import io.opentelemetry.api.trace.Span;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -96,6 +98,8 @@ public abstract class AbstractHTTPServer extends 
AbstractRemotingServer {
 
     private final transient EventMeshHTTPConfiguration 
eventMeshHttpConfiguration;
 
+    @Getter
+    @Setter
     private EventMeshHttpMetricsManager eventMeshHttpMetricsManager;
 
     private static final DefaultHttpDataFactory DEFAULT_HTTP_DATA_FACTORY = 
new DefaultHttpDataFactory(false);
@@ -105,8 +109,14 @@ public abstract class AbstractHTTPServer extends 
AbstractRemotingServer {
     }
 
     protected final transient AtomicBoolean started = new AtomicBoolean(false);
+
+    @Getter
     private final transient boolean useTLS;
+
+    @Getter
+    @Setter
     private Boolean useTrace = false; // Determine whether trace is enabled
+
     private static final int MAX_CONNECTIONS = 20_000;
 
     /**
@@ -118,10 +128,13 @@ public abstract class AbstractHTTPServer extends 
AbstractRemotingServer {
     private HttpConnectionHandler httpConnectionHandler;
     private HttpDispatcher httpDispatcher;
 
+    @Setter
+    @Getter
     private HandlerService handlerService;
     private final transient ThreadPoolExecutor asyncContextCompleteHandler =
         ThreadPoolFactory.createThreadPoolExecutor(10, 10, 
"EventMesh-http-asyncContext");
 
+    @Getter
     private final HTTPThreadPoolGroup httpThreadPoolGroup;
 
     public AbstractHTTPServer(final int port, final boolean useTLS,
@@ -523,32 +536,4 @@ public abstract class AbstractHTTPServer extends 
AbstractRemotingServer {
                 httpDispatcher);
         }
     }
-
-    public void setUseTrace(final Boolean useTrace) {
-        this.useTrace = useTrace;
-    }
-
-    public Boolean getUseTrace() {
-        return useTrace;
-    }
-
-    public EventMeshHttpMetricsManager getEventMeshHttpMetricsManager() {
-        return eventMeshHttpMetricsManager;
-    }
-
-    public void setEventMeshHttpMetricsManager(final 
EventMeshHttpMetricsManager eventMeshHttpMetricsManager) {
-        this.eventMeshHttpMetricsManager = eventMeshHttpMetricsManager;
-    }
-
-    public HTTPThreadPoolGroup getHttpThreadPoolGroup() {
-        return httpThreadPoolGroup;
-    }
-
-    public HandlerService getHandlerService() {
-        return handlerService;
-    }
-
-    public void setHandlerService(HandlerService handlerService) {
-        this.handlerService = handlerService;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java
index fb0911662..e02637ec3 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java
@@ -22,7 +22,6 @@ import org.apache.eventmesh.common.utils.SystemUtils;
 import org.apache.eventmesh.common.utils.ThreadUtils;
 import org.apache.eventmesh.runtime.core.protocol.producer.ProducerManager;
 
-import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
 import io.netty.channel.EventLoopGroup;
@@ -31,22 +30,32 @@ import io.netty.channel.epoll.EpollEventLoopGroup;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.util.concurrent.EventExecutorGroup;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 
 /**
  * The most basic server
  */
 @Slf4j
+@Getter
 public abstract class AbstractRemotingServer implements RemotingServer {
 
     private static final int MAX_THREADS = 
Runtime.getRuntime().availableProcessors();
     private static final int DEFAULT_SLEEP_SECONDS = 30;
 
+    @Setter
     private EventLoopGroup bossGroup;
+
+    @Setter
     private EventLoopGroup ioGroup;
+
+    @Setter
     private EventExecutorGroup workerGroup;
+
     protected ProducerManager producerManager;
 
+    @Setter
     private int port;
 
     protected void buildBossGroup(final String threadPrefix) {
@@ -75,10 +84,6 @@ public abstract class AbstractRemotingServer implements 
RemotingServer {
         producerManager.init();
     }
 
-    public ProducerManager getProducerManager() {
-        return producerManager;
-    }
-
     public void init(final String threadPrefix) throws Exception {
         buildBossGroup(threadPrefix);
         buildIOGroup(threadPrefix);
@@ -94,16 +99,16 @@ public abstract class AbstractRemotingServer implements 
RemotingServer {
             bossGroup.shutdownGracefully();
             log.info("shutdown bossGroup");
         }
-        if (Objects.isNull(producerManager)) {
+        if (producerManager != null) {
             producerManager.shutdown();
         }
+
         
ThreadUtils.randomPause(TimeUnit.SECONDS.toMillis(DEFAULT_SLEEP_SECONDS));
 
         if (ioGroup != null) {
             ioGroup.shutdownGracefully();
             log.info("shutdown ioGroup");
         }
-
         if (workerGroup != null) {
             workerGroup.shutdownGracefully();
 
@@ -114,36 +119,4 @@ public abstract class AbstractRemotingServer implements 
RemotingServer {
     protected boolean useEpoll() {
         return SystemUtils.isLinuxPlatform() && Epoll.isAvailable();
     }
-
-    public EventLoopGroup getBossGroup() {
-        return bossGroup;
-    }
-
-    public void setBossGroup(final EventLoopGroup bossGroup) {
-        this.bossGroup = bossGroup;
-    }
-
-    public EventLoopGroup getIoGroup() {
-        return ioGroup;
-    }
-
-    public void setIoGroup(final EventLoopGroup ioGroup) {
-        this.ioGroup = ioGroup;
-    }
-
-    public EventExecutorGroup getWorkerGroup() {
-        return workerGroup;
-    }
-
-    public void setWorkerGroup(final EventExecutorGroup workerGroup) {
-        this.workerGroup = workerGroup;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public void setPort(final int port) {
-        this.port = port;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminBootstrap.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminBootstrap.java
index e125475ec..b170afd3a 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminBootstrap.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminBootstrap.java
@@ -17,23 +17,38 @@
 
 package org.apache.eventmesh.runtime.boot;
 
+import static org.apache.eventmesh.common.Constants.ADMIN;
+
+import org.apache.eventmesh.common.config.ConfigService;
+import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
+import org.apache.eventmesh.runtime.configuration.EventMeshAdminConfiguration;
+
+import lombok.Getter;
+
 public class EventMeshAdminBootstrap implements EventMeshBootstrap {
 
+    @Getter
     private EventMeshAdminServer eventMeshAdminServer;
 
-    private EventMeshServer eventMeshServer;
+    private final EventMeshAdminConfiguration eventMeshAdminConfiguration;
+
+    private final EventMeshServer eventMeshServer;
 
     public EventMeshAdminBootstrap(EventMeshServer eventMeshServer) {
         this.eventMeshServer = eventMeshServer;
+
+        ConfigService configService = ConfigService.getInstance();
+        this.eventMeshAdminConfiguration = 
configService.buildConfigInstance(EventMeshAdminConfiguration.class);
+
+        ConfigurationContextUtil.putIfAbsent(ADMIN, 
eventMeshAdminConfiguration);
     }
 
     @Override
     public void init() throws Exception {
         if (eventMeshServer != null) {
-            eventMeshAdminServer = new EventMeshAdminServer(eventMeshServer);
+            eventMeshAdminServer = new EventMeshAdminServer(eventMeshServer, 
eventMeshAdminConfiguration);
             eventMeshAdminServer.init();
         }
-
     }
 
     @Override
@@ -41,7 +56,6 @@ public class EventMeshAdminBootstrap implements 
EventMeshBootstrap {
         if (eventMeshAdminServer != null) {
             eventMeshAdminServer.start();
         }
-
     }
 
     @Override
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
index 4abba74a5..5e98fc690 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java
@@ -17,13 +17,22 @@
 
 package org.apache.eventmesh.runtime.boot;
 
+import org.apache.eventmesh.common.ThreadPoolFactory;
+import org.apache.eventmesh.common.protocol.http.common.RequestCode;
 import org.apache.eventmesh.runtime.admin.handler.AdminHandlerManager;
 import org.apache.eventmesh.runtime.admin.handler.HttpHandler;
+import org.apache.eventmesh.runtime.configuration.EventMeshAdminConfiguration;
+import 
org.apache.eventmesh.runtime.core.protocol.http.processor.AdminMetricsProcessor;
 import org.apache.eventmesh.runtime.util.HttpResponseUtils;
 
 import java.net.URI;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
 
 import io.netty.bootstrap.ServerBootstrap;
 import io.netty.channel.ChannelFutureListener;
@@ -41,27 +50,37 @@ import io.netty.handler.codec.http.HttpRequest;
 import io.netty.handler.codec.http.HttpRequestDecoder;
 import io.netty.handler.codec.http.HttpResponseEncoder;
 import io.netty.handler.codec.http.HttpResponseStatus;
+import io.netty.handler.ssl.SslHandler;
 
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class EventMeshAdminServer extends AbstractHTTPServer {
 
+    private final EventMeshAdminConfiguration eventMeshAdminConfiguration;
+
     private HttpConnectionHandler httpConnectionHandler = new 
HttpConnectionHandler();
 
     private AdminHandlerManager adminHandlerManager;
 
-    public EventMeshAdminServer(EventMeshServer eventMeshServer) {
-        
super(eventMeshServer.getEventMeshTCPServer().getEventMeshTCPConfiguration().getEventMeshServerAdminPort(),
 false,
-            
eventMeshServer.getEventMeshHTTPServer().getEventMeshHttpConfiguration());
+    @Getter
+    private ThreadPoolExecutor adminMetricsExecutor;
+
+    public EventMeshAdminServer(final EventMeshServer eventMeshServer, final 
EventMeshAdminConfiguration eventMeshAdminConfiguration) {
+        super(eventMeshAdminConfiguration.getEventMeshServerAdminPort(),
+            eventMeshAdminConfiguration.isEventMeshServerUseTls(),
+            eventMeshAdminConfiguration);
+        this.eventMeshAdminConfiguration = eventMeshAdminConfiguration;
         adminHandlerManager = new AdminHandlerManager(eventMeshServer);
     }
 
-
     @Override
     public void init() throws Exception {
         super.init("eventMesh-admin");
+        initThreadPool();
         adminHandlerManager.registerHttpHandler();
+        registerAdminRequestProcessor();
     }
 
     @Override
@@ -71,8 +90,9 @@ public class EventMeshAdminServer extends AbstractHTTPServer {
             try {
                 bootstrap.group(this.getBossGroup(), this.getIoGroup())
                     .channel(useEpoll() ? EpollServerSocketChannel.class : 
NioServerSocketChannel.class)
-                    .childHandler(new AdminServerInitializer())
-                    .childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE);
+                    .childHandler(new AdminServerInitializer(
+                        this.isUseTLS() ? 
SSLContextFactory.getSslContext(eventMeshAdminConfiguration) : null, 
this.isUseTLS()))
+                    .childOption(ChannelOption.AUTO_CLOSE, Boolean.TRUE);
 
                 log.info("AdminHttpServer[port={}] started.", this.getPort());
 
@@ -95,29 +115,38 @@ public class EventMeshAdminServer extends 
AbstractHTTPServer {
         started.compareAndSet(false, true);
     }
 
-    public void parseHttpRequest(ChannelHandlerContext ctx, HttpRequest 
httpRequest) {
-        String uriStr = httpRequest.uri();
-        URI uri = URI.create(uriStr);
-        Optional<HttpHandler> httpHandlerOpt = 
adminHandlerManager.getHttpHandler(uri.getPath());
-        if (httpHandlerOpt.isPresent()) {
-            try {
-                httpHandlerOpt.get().handle(httpRequest, ctx);
-            } catch (Exception e) {
-                log.error("admin server channelRead error", e);
-                
ctx.writeAndFlush(HttpResponseUtils.buildHttpResponse(Objects.requireNonNull(e.getMessage()),
 ctx,
-                    HttpHeaderValues.APPLICATION_JSON, 
HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE);
-            }
-        } else {
-            
ctx.writeAndFlush(HttpResponseUtils.createNotFound()).addListener(ChannelFutureListener.CLOSE);
-        }
+    private void initThreadPool() {
+        adminMetricsExecutor = ThreadPoolFactory.createThreadPoolExecutor(
+            eventMeshAdminConfiguration.getEventMeshServerAdminThreadNum(),
+            eventMeshAdminConfiguration.getEventMeshServerAdminThreadNum(),
+            new LinkedBlockingQueue<>(50), "eventMesh-admin-metrics", true);
+    }
+
+    private void registerAdminRequestProcessor() {
+        final AdminMetricsProcessor adminMetricsProcessor = new 
AdminMetricsProcessor(this);
+        registerProcessor(RequestCode.ADMIN_METRICS.getRequestCode(), 
adminMetricsProcessor);
     }
 
     private class AdminServerInitializer extends 
ChannelInitializer<SocketChannel> {
 
+        private final transient SSLContext sslContext;
+        private final transient boolean useTLS;
+
+        public AdminServerInitializer(final SSLContext sslContext, final 
boolean useTLS) {
+            this.sslContext = sslContext;
+            this.useTLS = useTLS;
+        }
+
         @Override
         protected void initChannel(final SocketChannel channel) {
             final ChannelPipeline pipeline = channel.pipeline();
 
+            if (sslContext != null && useTLS) {
+                final SSLEngine sslEngine = sslContext.createSSLEngine();
+                sslEngine.setUseClientMode(false);
+                pipeline.addFirst(getWorkerGroup(), "ssl", new 
SslHandler(sslEngine));
+            }
+
             pipeline.addLast(getWorkerGroup(),
                 new HttpRequestDecoder(),
                 new HttpResponseEncoder(),
@@ -131,5 +160,22 @@ public class EventMeshAdminServer extends 
AbstractHTTPServer {
                     }
                 });
         }
+
+        private void parseHttpRequest(ChannelHandlerContext ctx, HttpRequest 
httpRequest) {
+            String uriStr = httpRequest.uri();
+            URI uri = URI.create(uriStr);
+            Optional<HttpHandler> httpHandlerOpt = 
adminHandlerManager.getHttpHandler(uri.getPath());
+            if (httpHandlerOpt.isPresent()) {
+                try {
+                    httpHandlerOpt.get().handle(httpRequest, ctx);
+                } catch (Exception e) {
+                    log.error("admin server channelRead error", e);
+                    
ctx.writeAndFlush(HttpResponseUtils.buildHttpResponse(Objects.requireNonNull(e.getMessage()),
 ctx,
+                        HttpHeaderValues.APPLICATION_JSON, 
HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE);
+                }
+            } else {
+                
ctx.writeAndFlush(HttpResponseUtils.createNotFound()).addListener(ChannelFutureListener.CLOSE);
+            }
+        }
     }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshGrpcBootstrap.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshGrpcBootstrap.java
index dc218084b..b6e493c1b 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshGrpcBootstrap.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshGrpcBootstrap.java
@@ -23,10 +23,13 @@ import org.apache.eventmesh.common.config.ConfigService;
 import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
 import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
 
+import lombok.Getter;
+
 public class EventMeshGrpcBootstrap implements EventMeshBootstrap {
 
     private final EventMeshGrpcConfiguration eventMeshGrpcConfiguration;
 
+    @Getter
     private EventMeshGrpcServer eventMeshGrpcServer;
 
     private final EventMeshServer eventMeshServer;
@@ -62,12 +65,4 @@ public class EventMeshGrpcBootstrap implements 
EventMeshBootstrap {
             eventMeshGrpcServer.shutdown();
         }
     }
-
-    public EventMeshGrpcServer getEventMeshGrpcServer() {
-        return eventMeshGrpcServer;
-    }
-
-    public void setEventMeshGrpcServer(EventMeshGrpcServer 
eventMeshGrpcServer) {
-        this.eventMeshGrpcServer = eventMeshGrpcServer;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java
index cc47cc972..1089a1caf 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java
@@ -31,7 +31,6 @@ import 
org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
 import org.apache.eventmesh.runtime.constants.EventMeshConstants;
 import org.apache.eventmesh.runtime.core.consumer.SubscriptionManager;
 import 
org.apache.eventmesh.runtime.core.protocol.http.consumer.ConsumerManager;
-import 
org.apache.eventmesh.runtime.core.protocol.http.processor.AdminMetricsProcessor;
 import 
org.apache.eventmesh.runtime.core.protocol.http.processor.BatchSendMessageProcessor;
 import 
org.apache.eventmesh.runtime.core.protocol.http.processor.BatchSendMessageV2Processor;
 import 
org.apache.eventmesh.runtime.core.protocol.http.processor.CreateTopicProcessor;
@@ -68,6 +67,7 @@ import org.assertj.core.util.Lists;
 import com.google.common.eventbus.EventBus;
 import com.google.common.util.concurrent.RateLimiter;
 
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 
 
@@ -75,6 +75,7 @@ import lombok.extern.slf4j.Slf4j;
  * Add multiple managers to the underlying server
  */
 @Slf4j
+@Getter
 public class EventMeshHTTPServer extends AbstractHTTPServer {
 
     private final EventMeshServer eventMeshServer;
@@ -95,7 +96,6 @@ public class EventMeshHTTPServer extends AbstractHTTPServer {
     private transient RateLimiter batchRateLimiter;
 
     public EventMeshHTTPServer(final EventMeshServer eventMeshServer, final 
EventMeshHTTPConfiguration eventMeshHttpConfiguration) {
-
         super(eventMeshHttpConfiguration.getHttpServerPort(),
             eventMeshHttpConfiguration.isEventMeshServerUseTls(),
             eventMeshHttpConfiguration);
@@ -103,7 +103,6 @@ public class EventMeshHTTPServer extends AbstractHTTPServer 
{
         this.eventMeshHttpConfiguration = eventMeshHttpConfiguration;
         this.metaStorage = eventMeshServer.getMetaStorage();
         this.acl = eventMeshServer.getAcl();
-
     }
 
     public void init() throws Exception {
@@ -251,9 +250,6 @@ public class EventMeshHTTPServer extends AbstractHTTPServer 
{
         final SendAsyncRemoteEventProcessor sendAsyncRemoteEventProcessor = 
new SendAsyncRemoteEventProcessor(this);
         this.getHandlerService().register(sendAsyncRemoteEventProcessor);
 
-        final AdminMetricsProcessor adminMetricsProcessor = new 
AdminMetricsProcessor(this);
-        registerProcessor(RequestCode.ADMIN_METRICS.getRequestCode(), 
adminMetricsProcessor);
-
         final HeartBeatProcessor heartProcessor = new HeartBeatProcessor(this);
         registerProcessor(RequestCode.HEARTBEAT.getRequestCode(), 
heartProcessor);
 
@@ -299,62 +295,4 @@ public class EventMeshHTTPServer extends 
AbstractHTTPServer {
 
         this.getHandlerService().register(webHookProcessor, 
super.getHttpThreadPoolGroup().getWebhookExecutor());
     }
-
-    public SubscriptionManager getSubscriptionManager() {
-        return subscriptionManager;
-    }
-
-    public ConsumerManager getConsumerManager() {
-        return consumerManager;
-    }
-
-    public ProducerManager getProducerManager() {
-        return producerManager;
-    }
-
-    public EventMeshHTTPConfiguration getEventMeshHttpConfiguration() {
-        return eventMeshHttpConfiguration;
-    }
-
-    public EventBus getEventBus() {
-        return eventBus;
-    }
-
-    public HttpRetryer getHttpRetryer() {
-        return httpRetryer;
-    }
-
-    public Acl getAcl() {
-        return acl;
-    }
-
-    public EventMeshServer getEventMeshServer() {
-        return eventMeshServer;
-    }
-
-    public RateLimiter getMsgRateLimiter() {
-        return msgRateLimiter;
-    }
-
-    public RateLimiter getBatchRateLimiter() {
-        return batchRateLimiter;
-    }
-
-    public FilterEngine getFilterEngine() {
-        return filterEngine;
-    }
-
-    public TransformerEngine getTransformerEngine() {
-        return transformerEngine;
-    }
-
-    public MetaStorage getMetaStorage() {
-        return metaStorage;
-    }
-
-    public HTTPClientPool getHttpClientPool() {
-        return httpClientPool;
-    }
-
-
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHttpBootstrap.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHttpBootstrap.java
index 87ce3c23a..df3b227e4 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHttpBootstrap.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHttpBootstrap.java
@@ -23,12 +23,15 @@ import org.apache.eventmesh.common.config.ConfigService;
 import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
 import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
 
-public class EventMeshHttpBootstrap implements EventMeshBootstrap {
+import lombok.Getter;
 
-    private final EventMeshHTTPConfiguration eventMeshHttpConfiguration;
+public class EventMeshHttpBootstrap implements EventMeshBootstrap {
 
+    @Getter
     public EventMeshHTTPServer eventMeshHttpServer;
 
+    private final EventMeshHTTPConfiguration eventMeshHttpConfiguration;
+
     private final EventMeshServer eventMeshServer;
 
     public EventMeshHttpBootstrap(final EventMeshServer eventMeshServer) {
@@ -64,12 +67,4 @@ public class EventMeshHttpBootstrap implements 
EventMeshBootstrap {
             eventMeshHttpServer.shutdown();
         }
     }
-
-    public EventMeshHTTPServer getEventMeshHttpServer() {
-        return eventMeshHttpServer;
-    }
-
-    public void setEventMeshHttpServer(EventMeshHTTPServer 
eventMeshHttpServer) {
-        this.eventMeshHttpServer = eventMeshHttpServer;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
index b3250795d..d61580b9c 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java
@@ -43,23 +43,32 @@ import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Collectors;
 
+import lombok.Getter;
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class EventMeshServer {
 
+    @Getter
     private final Acl acl;
 
+    @Getter
+    @Setter
     private MetaStorage metaStorage;
 
+    @Getter
     private static Trace trace;
 
     private final StorageResource storageResource;
 
+    @Getter
     private ServiceState serviceState;
 
+    @Getter
     private ProducerTopicManager producerTopicManager;
 
+    @Getter
     private final CommonConfiguration configuration;
 
     //  private transient ClientManageController clientManageController;
@@ -70,13 +79,17 @@ public class EventMeshServer {
 
     private static final ConfigService configService = 
ConfigService.getInstance();
 
-    private EventMeshAdminBootstrap adminBootstrap;
-
+    @Getter
     private EventMeshTCPServer eventMeshTCPServer = null;
 
+    @Getter
+    private EventMeshHTTPServer eventMeshHTTPServer = null;
+
+    @Getter
     private EventMeshGrpcServer eventMeshGrpcServer = null;
 
-    private EventMeshHTTPServer eventMeshHTTPServer = null;
+    @Getter
+    private EventMeshAdminServer eventMeshAdminServer = null;
 
     private EventMeshMetricsManager eventMeshMetricsManager;
 
@@ -105,8 +118,7 @@ public class EventMeshServer {
                 case GRPC:
                     BOOTSTRAP_LIST.add(new EventMeshGrpcBootstrap(this));
                     break;
-                default:
-                    // nothing to do
+                default: // nothing to do
             }
         }
 
@@ -115,6 +127,9 @@ public class EventMeshServer {
             BOOTSTRAP_LIST.add(new EventMeshTcpBootstrap(this));
         }
 
+        // HTTP Admin Server always enabled
+        BOOTSTRAP_LIST.add(new EventMeshAdminBootstrap(this));
+
         List<String> metricsPluginTypes = 
configuration.getEventMeshMetricsPluginType();
         if (CollectionUtils.isNotEmpty(metricsPluginTypes)) {
             List<MetricsRegistry> metricsRegistries = 
metricsPluginTypes.stream().map(metric -> 
MetricsPluginFactory.getMetricsRegistry(metric))
@@ -147,6 +162,9 @@ public class EventMeshServer {
             if (eventMeshBootstrap instanceof EventMeshGrpcBootstrap) {
                 eventMeshGrpcServer = ((EventMeshGrpcBootstrap) 
eventMeshBootstrap).getEventMeshGrpcServer();
             }
+            if (eventMeshBootstrap instanceof EventMeshAdminBootstrap) {
+                eventMeshAdminServer = ((EventMeshAdminBootstrap) 
eventMeshBootstrap).getEventMeshAdminServer();
+            }
         }
 
         if (Objects.nonNull(eventMeshTCPServer)) {
@@ -168,12 +186,6 @@ public class EventMeshServer {
             eventMeshMetricsManager.init();
         }
 
-
-        if (Objects.nonNull(eventMeshTCPServer) && 
Objects.nonNull(eventMeshHTTPServer) && Objects.nonNull(eventMeshGrpcServer)) {
-            adminBootstrap = new EventMeshAdminBootstrap(this);
-            adminBootstrap.init();
-        }
-
         producerTopicManager = new ProducerTopicManager(this);
         producerTopicManager.init();
 
@@ -203,13 +215,10 @@ public class EventMeshServer {
             eventMeshBootstrap.start();
         }
 
-        if (Objects.nonNull(adminBootstrap)) {
-            adminBootstrap.start();
-        }
         producerTopicManager.start();
+
         serviceState = ServiceState.RUNNING;
         log.info(SERVER_STATE_MSG, serviceState);
-
     }
 
     public void shutdown() throws Exception {
@@ -235,48 +244,8 @@ public class EventMeshServer {
         }
         producerTopicManager.shutdown();
         ConfigurationContextUtil.clear();
-        serviceState = ServiceState.STOPPED;
 
+        serviceState = ServiceState.STOPPED;
         log.info(SERVER_STATE_MSG, serviceState);
     }
-
-    public static Trace getTrace() {
-        return trace;
-    }
-
-    public ServiceState getServiceState() {
-        return serviceState;
-    }
-
-    public MetaStorage getMetaStorage() {
-        return metaStorage;
-    }
-
-    public void setMetaStorage(final MetaStorage metaStorage) {
-        this.metaStorage = metaStorage;
-    }
-
-    public Acl getAcl() {
-        return acl;
-    }
-
-    public ProducerTopicManager getProducerTopicManager() {
-        return producerTopicManager;
-    }
-
-    public CommonConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public EventMeshTCPServer getEventMeshTCPServer() {
-        return eventMeshTCPServer;
-    }
-
-    public EventMeshGrpcServer getEventMeshGrpcServer() {
-        return eventMeshGrpcServer;
-    }
-
-    public EventMeshHTTPServer getEventMeshHTTPServer() {
-        return eventMeshHTTPServer;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTcpBootstrap.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTcpBootstrap.java
index 9cd665d28..e098b203c 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTcpBootstrap.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTcpBootstrap.java
@@ -23,8 +23,11 @@ import org.apache.eventmesh.common.config.ConfigService;
 import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
 import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration;
 
+import lombok.Getter;
+
 public class EventMeshTcpBootstrap implements EventMeshBootstrap {
 
+    @Getter
     private EventMeshTCPServer eventMeshTcpServer;
 
     private final EventMeshTCPConfiguration eventMeshTcpConfiguration;
@@ -63,13 +66,4 @@ public class EventMeshTcpBootstrap implements 
EventMeshBootstrap {
             eventMeshTcpServer.shutdown();
         }
     }
-
-    public EventMeshTCPServer getEventMeshTcpServer() {
-        return eventMeshTcpServer;
-    }
-
-    public void setEventMeshTcpServer(EventMeshTCPServer eventMeshTcpServer) {
-        this.eventMeshTcpServer = eventMeshTcpServer;
-    }
-
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
index bf6c740b5..aa1178850 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java
@@ -23,17 +23,25 @@ import 
org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 
+import lombok.Getter;
+
 public class HTTPThreadPoolGroup implements ThreadPoolGroup {
 
     private final EventMeshHTTPConfiguration eventMeshHttpConfiguration;
 
+    @Getter
     private ThreadPoolExecutor batchMsgExecutor;
+    @Getter
     private ThreadPoolExecutor sendMsgExecutor;
+    @Getter
     private ThreadPoolExecutor remoteMsgExecutor;
+    @Getter
     private ThreadPoolExecutor replyMsgExecutor;
+    @Getter
     private ThreadPoolExecutor pushMsgExecutor;
+    @Getter
     private ThreadPoolExecutor clientManageExecutor;
-    private ThreadPoolExecutor runtimeAdminExecutor;
+    @Getter
     private ThreadPoolExecutor webhookExecutor;
 
     public HTTPThreadPoolGroup(EventMeshHTTPConfiguration 
eventMeshHttpConfiguration) {
@@ -73,12 +81,6 @@ public class HTTPThreadPoolGroup implements ThreadPoolGroup {
             new 
LinkedBlockingQueue<>(eventMeshHttpConfiguration.getEventMeshServerClientManageBlockQSize()),
             "eventMesh-clientManage", true);
 
-        // The runtimeAdminExecutor here is for the runtime.admin package.
-        runtimeAdminExecutor = ThreadPoolFactory.createThreadPoolExecutor(
-            eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(),
-            eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(),
-            new LinkedBlockingQueue<>(50), "eventMesh-runtime-admin", true);
-
         replyMsgExecutor = ThreadPoolFactory.createThreadPoolExecutor(
             eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(),
             eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(),
@@ -95,9 +97,6 @@ public class HTTPThreadPoolGroup implements ThreadPoolGroup {
         if (batchMsgExecutor != null) {
             batchMsgExecutor.shutdown();
         }
-        if (runtimeAdminExecutor != null) {
-            runtimeAdminExecutor.shutdown();
-        }
         if (clientManageExecutor != null) {
             clientManageExecutor.shutdown();
         }
@@ -114,36 +113,4 @@ public class HTTPThreadPoolGroup implements 
ThreadPoolGroup {
             replyMsgExecutor.shutdown();
         }
     }
-
-    public ThreadPoolExecutor getBatchMsgExecutor() {
-        return batchMsgExecutor;
-    }
-
-    public ThreadPoolExecutor getSendMsgExecutor() {
-        return sendMsgExecutor;
-    }
-
-    public ThreadPoolExecutor getRemoteMsgExecutor() {
-        return remoteMsgExecutor;
-    }
-
-    public ThreadPoolExecutor getReplyMsgExecutor() {
-        return replyMsgExecutor;
-    }
-
-    public ThreadPoolExecutor getPushMsgExecutor() {
-        return pushMsgExecutor;
-    }
-
-    public ThreadPoolExecutor getClientManageExecutor() {
-        return clientManageExecutor;
-    }
-
-    public ThreadPoolExecutor getRuntimeAdminExecutor() {
-        return runtimeAdminExecutor;
-    }
-
-    public ThreadPoolExecutor getWebhookExecutor() {
-        return webhookExecutor;
-    }
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java
index 0f48220a4..a0736b430 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java
@@ -17,6 +17,7 @@
 
 package org.apache.eventmesh.runtime.boot;
 
+import org.apache.eventmesh.runtime.configuration.EventMeshAdminConfiguration;
 import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
 import org.apache.eventmesh.runtime.constants.EventMeshConstants;
 
@@ -40,23 +41,19 @@ import javax.net.ssl.SSLContext;
 
 public class SSLContextFactory {
 
-    private static String protocol = "TLSv1.1";
-
-    private static String fileName;
-
-    private static String password;
-
+    /**
+     * {@link EventMeshAdminConfiguration} will be parsed into {@link 
EventMeshHTTPConfiguration}.
+     */
     public static SSLContext getSslContext(final EventMeshHTTPConfiguration 
eventMeshHttpConfiguration)
-        throws NoSuchAlgorithmException, KeyStoreException, 
CertificateException, IOException,
-        UnrecoverableKeyException, KeyManagementException {
+        throws NoSuchAlgorithmException, KeyStoreException, 
CertificateException, IOException, UnrecoverableKeyException, 
KeyManagementException {
+
+        String protocol = 
eventMeshHttpConfiguration.getEventMeshServerSSLProtocol();
+        String fileName = 
eventMeshHttpConfiguration.getEventMeshServerSSLCer();
+        String password = 
eventMeshHttpConfiguration.getEventMeshServerSSLPass();
         SSLContext sslContext;
 
-        try (InputStream inputStream = 
Files.newInputStream(Paths.get(EventMeshConstants.EVENTMESH_CONF_HOME
-            + File.separator
-            + fileName), StandardOpenOption.READ)) {
-            protocol = 
eventMeshHttpConfiguration.getEventMeshServerSSLProtocol();
-            fileName = eventMeshHttpConfiguration.getEventMeshServerSSLCer();
-            password = eventMeshHttpConfiguration.getEventMeshServerSSLPass();
+        try (InputStream inputStream = 
Files.newInputStream(Paths.get(EventMeshConstants.EVENTMESH_CONF_HOME + 
File.separator + fileName),
+            StandardOpenOption.READ)) {
 
             char[] filePass = StringUtils.isNotBlank(password) ? 
password.toCharArray() : new char[0];
             final KeyStore keyStore = KeyStore.getInstance("JKS");
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshAdminConfiguration.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshAdminConfiguration.java
new file mode 100644
index 000000000..dff80eaaa
--- /dev/null
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshAdminConfiguration.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.runtime.configuration;
+
+import org.apache.eventmesh.common.config.Config;
+import org.apache.eventmesh.common.config.ConfigField;
+
+import java.util.Collections;
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import inet.ipaddr.IPAddress;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Config(prefix = "eventMesh.server")
+public class EventMeshAdminConfiguration extends EventMeshHTTPConfiguration {
+
+    @ConfigField(field = "admin.http.port")
+    private int eventMeshServerAdminPort = 10106;
+
+    @ConfigField(field = "admin.threads.num")
+    private int eventMeshServerAdminThreadNum = 2;
+
+    @ConfigField(field = "admin.useTls.enabled")
+    private boolean eventMeshServerUseTls = false;
+
+    @ConfigField(field = "admin.ssl.protocol")
+    private String eventMeshServerSSLProtocol = "TLSv1.3";
+
+    @ConfigField(field = "admin.ssl.cer")
+    private String eventMeshServerSSLCer = "admin-server.jks";
+
+    @ConfigField(field = "admin.ssl.pass")
+    private String eventMeshServerSSLPass = "eventmesh-admin-server";
+
+    @ConfigField(field = "admin.blacklist.ipv4")
+    private List<IPAddress> eventMeshIpv4BlackList = Collections.emptyList(); 
// TODO implement after merging #4835
+
+    @ConfigField(field = "admin.blacklist.ipv6")
+    private List<IPAddress> eventMeshIpv6BlackList = Collections.emptyList();
+}
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
index cf08f2755..924a07ab0 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java
@@ -59,9 +59,6 @@ public class EventMeshGrpcConfiguration extends 
CommonConfiguration {
     @ConfigField(field = "metaStorage.threads.num")
     private int eventMeshServerMetaStorageThreadNum = 10;
 
-    @ConfigField(field = "admin.threads.num")
-    private int eventMeshServerAdminThreadNum = 2;
-
     @ConfigField(field = "retry.threads.num")
     private int eventMeshServerRetryThreadNum = 2;
 
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
index b0fa18df4..287c22224 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java
@@ -63,9 +63,6 @@ public class EventMeshHTTPConfiguration extends 
CommonConfiguration {
     @ConfigField(field = "metaStorage.threads.num")
     private int eventMeshServerMetaStorageThreadNum = 10;
 
-    @ConfigField(field = "admin.threads.num")
-    private int eventMeshServerAdminThreadNum = 2;
-
     @ConfigField(field = "retry.threads.num")
     private int eventMeshServerRetryThreadNum = 2;
 
@@ -131,5 +128,4 @@ public class EventMeshHTTPConfiguration extends 
CommonConfiguration {
 
     @ConfigField(field = "blacklist.ipv6")
     private List<IPAddress> eventMeshIpv6BlackList = Collections.emptyList();
-
 }
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
index 891f98616..907d80f68 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java
@@ -109,9 +109,6 @@ public class EventMeshTCPConfiguration extends 
CommonConfiguration {
     @ConfigField(field = "tcp.RebalanceIntervalInMills")
     private Integer eventMeshTcpRebalanceIntervalInMills = 30 * 1000;
 
-    @ConfigField(field = "admin.http.port")
-    private int eventMeshServerAdminPort = 10106;
-
     @ConfigField(field = "tcp.sendBack.enabled")
     private boolean eventMeshTcpSendBackEnabled = Boolean.TRUE;
 
diff --git 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java
 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java
index b3fbf0d6a..9a8b36934 100644
--- 
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java
+++ 
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java
@@ -18,7 +18,7 @@
 package org.apache.eventmesh.runtime.core.protocol.http.processor;
 
 import org.apache.eventmesh.common.protocol.http.HttpCommand;
-import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
+import org.apache.eventmesh.runtime.boot.EventMeshAdminServer;
 import org.apache.eventmesh.runtime.core.protocol.http.async.AsyncContext;
 
 import java.util.concurrent.Executor;
@@ -31,7 +31,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class AdminMetricsProcessor extends AbstractHttpRequestProcessor {
 
-    private final EventMeshHTTPServer eventMeshHTTPServer;
+    private final EventMeshAdminServer eventMeshAdminServer;
 
     @Override
     public void processRequest(ChannelHandlerContext ctx, 
AsyncContext<HttpCommand> asyncContext) throws Exception {
@@ -39,6 +39,6 @@ public class AdminMetricsProcessor extends 
AbstractHttpRequestProcessor {
 
     @Override
     public Executor executor() {
-        return 
eventMeshHTTPServer.getHttpThreadPoolGroup().getRuntimeAdminExecutor();
+        return eventMeshAdminServer.getAdminMetricsExecutor();
     }
 }
diff --git 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
index c546d38e3..83baf20fb 100644
--- 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
+++ 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/boot/EventMeshServerTest.java
@@ -77,7 +77,6 @@ public class EventMeshServerTest {
         Assertions.assertEquals(15816, 
config.getEventMeshTcpMsgRetryAsyncDelayInMills());
         Assertions.assertEquals(16816, 
config.getEventMeshTcpMsgRetryQueueSize());
         Assertions.assertEquals(Integer.valueOf(17816), 
config.getEventMeshTcpRebalanceIntervalInMills());
-        Assertions.assertEquals(18816, config.getEventMeshServerAdminPort());
         Assertions.assertEquals(Boolean.TRUE, 
config.isEventMeshTcpSendBackEnabled());
         Assertions.assertEquals(3, config.getEventMeshTcpSendBackMaxTimes());
         Assertions.assertEquals(21816, 
config.getEventMeshTcpPushFailIsolateTimeInMills());
diff --git 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
index 6b206167d..4dc59a200 100644
--- 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
+++ 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfigurationTest.java
@@ -50,7 +50,6 @@ public class EventMeshGrpcConfigurationTest {
         Assertions.assertEquals(5816, 
config.getEventMeshServerReplyMsgThreadNum());
         Assertions.assertEquals(6816, 
config.getEventMeshServerSubscribeMsgThreadNum());
         Assertions.assertEquals(7816, 
config.getEventMeshServerMetaStorageThreadNum());
-        Assertions.assertEquals(8816, 
config.getEventMeshServerAdminThreadNum());
         Assertions.assertEquals(9816, 
config.getEventMeshServerRetryThreadNum());
         Assertions.assertEquals(11816, 
config.getEventMeshServerPullMetaStorageInterval());
         Assertions.assertEquals(12816, 
config.getEventMeshServerAsyncAccumulationThreshold());
diff --git 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
index d522ff551..9e99bc511 100644
--- 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
+++ 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfigurationTest.java
@@ -53,7 +53,6 @@ public class EventMeshHTTPConfigurationTest {
         Assertions.assertEquals(5816, 
config.getEventMeshServerReplyMsgThreadNum());
         Assertions.assertEquals(6816, 
config.getEventMeshServerClientManageThreadNum());
         Assertions.assertEquals(7816, 
config.getEventMeshServerMetaStorageThreadNum());
-        Assertions.assertEquals(8816, 
config.getEventMeshServerAdminThreadNum());
 
         Assertions.assertEquals(9816, 
config.getEventMeshServerRetryThreadNum());
         Assertions.assertEquals(11816, 
config.getEventMeshServerPullMetaStorageInterval());
diff --git 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
index 1501cf1b5..2aee84ef7 100644
--- 
a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
+++ 
b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfigurationTest.java
@@ -58,7 +58,6 @@ public class EventMeshTCPConfigurationTest {
         Assertions.assertEquals(15816, 
config.getEventMeshTcpMsgRetryAsyncDelayInMills());
         Assertions.assertEquals(16816, 
config.getEventMeshTcpMsgRetryQueueSize());
         Assertions.assertEquals(Integer.valueOf(17816), 
config.getEventMeshTcpRebalanceIntervalInMills());
-        Assertions.assertEquals(18816, config.getEventMeshServerAdminPort());
         Assertions.assertEquals(Boolean.TRUE, 
config.isEventMeshTcpSendBackEnabled());
         Assertions.assertEquals(3, config.getEventMeshTcpSendBackMaxTimes());
         Assertions.assertEquals(21816, 
config.getEventMeshTcpPushFailIsolateTimeInMills());
diff --git a/eventmesh-runtime/src/test/resources/configuration.properties 
b/eventmesh-runtime/src/test/resources/configuration.properties
index 70ff82e05..836fc9c98 100644
--- a/eventmesh-runtime/src/test/resources/configuration.properties
+++ b/eventmesh-runtime/src/test/resources/configuration.properties
@@ -78,7 +78,6 @@ eventMesh.server.tcp.writerIdleSeconds=2816
 eventMesh.server.tcp.readerIdleSeconds=3816
 eventMesh.server.tcp.msgReqnumPerSecond=4816
 eventMesh.server.tcp.clientMaxNum=5816
-eventMesh.server.tcp.enabled=true
 eventMesh.server.global.scheduler=6816
 eventMesh.server.tcp.taskHandleExecutorPoolSize=7816
 eventMesh.server.tcp.msgDownStreamExecutorPoolSize=8816
@@ -89,7 +88,6 @@ eventMesh.server.retry.sync.pushRetryDelayInMills=14816
 eventMesh.server.retry.async.pushRetryDelayInMills=15816
 eventMesh.server.retry.pushRetryQueueSize=16816
 eventMesh.server.tcp.RebalanceIntervalInMills=17816
-eventMesh.server.admin.http.port=18816
 eventMesh.server.tcp.sendBack.enabled=true
 eventMesh.server.tcp.pushFailIsolateTimeInMills=21816
 eventMesh.server.gracefulShutdown.sleepIntervalInMills=22816


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to