xuxueli 6 years ago
parent
commit
3957ef2ff7

+ 1 - 1
doc/XXL-JOB官方文档.md

@@ -347,7 +347,7 @@ XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是
     <property name="appName" value="${xxl.job.executor.appname}" />
     <!-- 执行器IP[选填],为空则自动获取 -->
     <property name="ip" value="${xxl.job.executor.ip}" />
-    <!-- 执行器端口号[选填],为空则自动获取 -->
+    <!-- 执行器端口号[选填],小于等于0则自动获取 -->
     <property name="port" value="${xxl.job.executor.port}" />
     <!-- 访问令牌[选填],非空则进行匹配校验 -->
     <property name="accessToken" value="${xxl.job.accessToken}" />

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

@@ -129,7 +129,7 @@ public class XxlJobExecutor implements ApplicationContextAware {
     private NetComServerFactory serverFactory = new NetComServerFactory();
     private void initExecutorServer(int port, String ip, String appName, String accessToken) throws Exception {
         // valid param
-        port = port>0?port: NetUtil.findAvailablePort(9999,ip);
+        port = port>0?port: NetUtil.findAvailablePort(9999);
 
         // start server
         NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl());   // rpc-service, base on jetty

+ 8 - 27
xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java

@@ -2,10 +2,8 @@ package com.xxl.job.core.util;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.util.StringUtils;
 
 import java.io.IOException;
-import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 
 /**
@@ -17,24 +15,23 @@ public class NetUtil {
     private static Logger logger = LoggerFactory.getLogger(NetUtil.class);
 
     /**
-     * find avaliable port by ip
+     * find avaliable port
      *
      * @param defaultPort
-     * @param ip
      * @return
      */
-    public static int findAvailablePort(int defaultPort,String ip) {
+    public static int findAvailablePort(int defaultPort) {
         int portTmp = defaultPort;
         while (portTmp < 65535) {
-            if (!isPortUsed(portTmp,ip)) {
+            if (!isPortUsed(portTmp)) {
                 return portTmp;
             } else {
                 portTmp++;
             }
         }
-        portTmp = --defaultPort;
+        portTmp = defaultPort--;
         while (portTmp > 0) {
-            if (!isPortUsed(portTmp,ip)) {
+            if (!isPortUsed(portTmp)) {
                 return portTmp;
             } else {
                 portTmp--;
@@ -44,33 +41,17 @@ public class NetUtil {
     }
 
     /**
-     * find avaliable port
-     *
-     * @param defaultPort
-     * @return
-     */
-    public static int findAvailablePort(int defaultPort) {
-        return findAvailablePort(defaultPort,null);
-    }
-
-
-    /**
      * check port used
      *
      * @param port
-     * @param ip 为空则为 InetAddress.anyLocalAddress()
      * @return
      */
-    public static boolean isPortUsed(int port,String ip) {
+    public static boolean isPortUsed(int port) {
         boolean used = false;
         ServerSocket serverSocket = null;
         try {
-            if(StringUtils.isEmpty(ip)){
-                serverSocket = new ServerSocket(port);
-            }else {
-                serverSocket = new ServerSocket();
-                serverSocket.bind(new InetSocketAddress(ip,port));
-            }
+            serverSocket = new ServerSocket(port);
+            used = false;
         } catch (IOException e) {
             logger.debug(">>>>>>>>>>> xxl-job, port[{}] is in use.", port);
             used = true;

+ 1 - 1
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml

@@ -29,7 +29,7 @@
 		<property name="appName" value="${xxl.job.executor.appname}" />
 		<!-- 执行器IP[选填],为空则自动获取 -->
 		<property name="ip" value="${xxl.job.executor.ip}" />
-		<!-- 执行器端口号[选填],为<0则自动获取 -->
+		<!-- 执行器端口号[选填],小于等于0则自动获取 -->
 		<property name="port" value="${xxl.job.executor.port}" />
 		<!-- 访问令牌[选填],非空则进行匹配校验 -->
 		<property name="accessToken" value="${xxl.job.accessToken}" />