diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java index a4c2ca6b..186ca59e 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java @@ -1,5 +1,6 @@ package org.dromara.neutrinoproxy.server.base.proxy; +import io.netty.bootstrap.ServerBootstrap; import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum; import org.dromara.neutrinoproxy.core.ProxyMessage; import org.dromara.neutrinoproxy.core.ProxyMessageHandler; @@ -43,6 +44,14 @@ public class ProxyConfiguration implements LifecycleBean { return new NioEventLoopGroup(proxyConfig.getServer().getWorkThreadCount()); } + @Bean("tcpServerBootstrap") + public ServerBootstrap tcpServerBootstrap(@Inject("serverBossGroup") NioEventLoopGroup serverBossGroup, + @Inject("serverWorkerGroup") NioEventLoopGroup serverWorkerGroup) { + ServerBootstrap bootstrap = new ServerBootstrap(); + bootstrap.group(serverBossGroup, serverWorkerGroup); + return bootstrap; + } + @Bean("tunnelBossGroup") public NioEventLoopGroup tunnelBossGroup(@Inject ProxyConfig proxyConfig) { return new NioEventLoopGroup(proxyConfig.getTunnel().getBossThreadCount()); diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java index 6eb7c5aa..229780ba 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/VisitorChannelService.java @@ -41,10 +41,8 @@ import java.util.stream.Collectors; @Slf4j @Component public class VisitorChannelService { - @Inject("serverBossGroup") - private NioEventLoopGroup serverBossGroup; - @Inject("serverWorkerGroup") - private NioEventLoopGroup serverWorkerGroup; + @Inject("tcpServerBootstrap") + private ServerBootstrap tcpServerBootstrap; @Inject private ProxyMutualService proxyMutualService; @Db @@ -218,20 +216,18 @@ public class VisitorChannelService { if (CollectionUtil.isEmpty(portMappingList)) { return; } - ServerBootstrap bootstrap = new ServerBootstrap(); - bootstrap.group(serverBossGroup, serverWorkerGroup) - .channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer() { + tcpServerBootstrap.channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer() { @Override public void initChannel(SocketChannel ch) throws Exception { - ch.pipeline().addFirst(new BytesMetricsHandler()); - ch.pipeline().addLast(new TcpVisitorChannelHandler()); - } - }); + ch.pipeline().addFirst(new BytesMetricsHandler()); + ch.pipeline().addLast(new TcpVisitorChannelHandler()); + } + }); for (PortMappingDO portMapping : portMappingList) { try { proxyMutualService.bindServerPort(cmdChannelAttachInfo, portMapping.getServerPort()); - bootstrap.bind(portMapping.getServerPort()).get(); + tcpServerBootstrap.bind(portMapping.getServerPort()).get(); log.info("绑定用户端口: {}", portMapping.getServerPort()); } catch (Exception ex) { // BindException表示该端口已经绑定过