diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index 01a7195..72db2fd 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -56,12 +56,6 @@ - - - - com.mysql - mysql-connector-j - diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java index e70b8cf..04dac6c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java @@ -1,7 +1,9 @@ package com.ruoyi.framework.datasource; import java.util.Map; + import javax.sql.DataSource; + import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; /** diff --git a/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/NettyServerRunner.java b/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/NettyServerRunner.java index fa69d6d..626850e 100644 --- a/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/NettyServerRunner.java +++ b/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/NettyServerRunner.java @@ -7,6 +7,8 @@ import org.springframework.stereotype.Component; import com.ruoyi.netty.websocket.nettyServer.NettyWebSocketServer; +import jakarta.annotation.PreDestroy; + @Component public class NettyServerRunner implements ApplicationRunner { @@ -18,4 +20,9 @@ public class NettyServerRunner implements ApplicationRunner { server.start(); } + @PreDestroy + public void destroy() { + server.shutdown(); + } + } diff --git a/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/nettyServer/NettyWebSocketServer.java b/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/nettyServer/NettyWebSocketServer.java index c37314d..db276fd 100644 --- a/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/nettyServer/NettyWebSocketServer.java +++ b/ruoyi-plugins/ruoyi-netty/src/main/java/com/ruoyi/netty/websocket/nettyServer/NettyWebSocketServer.java @@ -1,14 +1,19 @@ package com.ruoyi.netty.websocket.nettyServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.ruoyi.netty.websocket.nettyServer.handler.WebSocketHandler; import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.ChannelPipeline; +import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; @@ -19,7 +24,9 @@ import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler; @Component public class NettyWebSocketServer { - private static ServerBootstrap serverBootstrap; + private static final Logger log = LoggerFactory.getLogger(NettyWebSocketServer.class); + private ServerBootstrap serverBootstrap; + private Channel serverChannel; @Value("${netty.websocket.maxMessageSize}") private Long messageSize; @@ -56,10 +63,27 @@ public class NettyWebSocketServer { pipeline.addLast(new WebSocketServerProtocolHandler("/", true)); } }); - serverBootstrap.bind(port.intValue()).sync(); - System.out.println( - "----------------------------------------------------------------------------------- \n Arknights!"); - NettyWebSocketServer.serverBootstrap = serverBootstrap; - return NettyWebSocketServer.serverBootstrap; + ChannelFuture future = serverBootstrap.bind(port.intValue()).sync(); + serverChannel = future.channel(); + log.info("netty for websocket start success, running in port: {}", this.port); + this.serverBootstrap = serverBootstrap; + return this.serverBootstrap; + } + + public void shutdown() { + if (serverChannel != null) { + serverChannel.close().syncUninterruptibly(); + } + if (serverBootstrap != null) { + EventLoopGroup bossGroup = serverBootstrap.config().group(); + EventLoopGroup workerGroup = serverBootstrap.config().childGroup(); + if (bossGroup != null) { + bossGroup.shutdownGracefully().syncUninterruptibly(); + } + if (workerGroup != null) { + workerGroup.shutdownGracefully().syncUninterruptibly(); + } + } + log.info("netty for websocket shudown success"); } }