diff --git a/broker/src/main/java/com/xiaoleilu/loServer/LoFileServer.java b/broker/src/main/java/com/xiaoleilu/loServer/LoFileServer.java index 5bc31d87..ebcadc1a 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/LoFileServer.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/LoFileServer.java @@ -80,9 +80,12 @@ public class LoFileServer { channel = b.bind(port).sync().channel(); Logger.info("***** Welcome To LoServer on port [{}], startting spend {}ms *****", port, DateUtil.spendMs(start)); - } finally { - - } + } catch (Exception e) { + e.printStackTrace(); + Logger.error("端口 {} 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep {}", port, port); + System.out.println("端口 " + port + " 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep " + port); + System.exit(-1); + } } public void shutdown() { if (this.channel != null) { diff --git a/broker/src/main/java/com/xiaoleilu/loServer/LoServer.java b/broker/src/main/java/com/xiaoleilu/loServer/LoServer.java index ad29eca7..f22760ad 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/LoServer.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/LoServer.java @@ -62,6 +62,7 @@ public class LoServer { registerAllAction(); + int bindingPort = port; try { final ServerBootstrap b = new ServerBootstrap(); final ServerBootstrap adminB = new ServerBootstrap(); @@ -87,6 +88,7 @@ public class LoServer { channel = b.bind(port).sync().channel(); + bindingPort = adminPort; adminB.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 10240) // 服务端可连接队列大小 @@ -108,10 +110,14 @@ public class LoServer { adminChannel = adminB.bind(adminPort).sync().channel(); Logger.info("***** Welcome To LoServer on port [{},{}], startting spend {}ms *****", port, adminPort, DateUtil.spendMs(start)); - } finally { - - } + } catch (Exception e) { + e.printStackTrace(); + Logger.error("端口 {} 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep {}", bindingPort, bindingPort); + System.out.println("端口 " + bindingPort + " 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep " + bindingPort); + System.exit(-1); + } } + public void shutdown() { if (this.channel!= null) { this.channel.close(); diff --git a/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java b/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java index 8de0b417..e1de77a4 100644 --- a/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java +++ b/broker/src/main/java/io/moquette/server/netty/NettyAcceptor.java @@ -149,12 +149,10 @@ public class NettyAcceptor implements ServerAcceptor { } catch (InterruptedException ex) { LOG.error("An interruptedException was caught while initializing server. Protocol={}", protocol, ex); } catch (Exception e) { - if(e instanceof BindException) { - e.printStackTrace(); - LOG.error("端口 {} 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep {}", port, port); - System.out.println("端口 " + port + " 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep " + port); - } - throw e; + e.printStackTrace(); + LOG.error("端口 {} 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep {}", port, port); + System.out.println("端口 " + port + " 已经被占用。请检查该端口被那个程序占用,找到程序停掉。\n查找端口被那个程序占用的命令是: netstat -tunlp | grep " + port); + System.exit(-1); } }