From 650682d2fec046c5b5c8d2c19428600cb85cf81f Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Thu, 11 May 2017 21:17:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=95=E5=B1=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xxl/job/core/executor/XxlJobExecutor.java | 6 +++- .../core/thread/ExecutorRegistryThread.java | 4 ++- .../com/xxl/job/core/util/AdminApiUtil.java | 31 +++++++++++++------ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index 8d94554c..222f59e7 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -8,6 +8,7 @@ import com.xxl.job.core.rpc.netcom.NetComServerFactory; import com.xxl.job.core.thread.ExecutorRegistryThread; import com.xxl.job.core.thread.JobThread; import com.xxl.job.core.thread.TriggerCallbackThread; +import com.xxl.job.core.util.AdminApiUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -29,7 +30,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe private String ip; private int port = 9999; private String appName; - public static String adminAddresses; + private String adminAddresses; public static String logPath; public void setIp(String ip) { @@ -51,6 +52,9 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe // ---------------------------------- job server ------------------------------------ private NetComServerFactory serverFactory = new NetComServerFactory(); public void start() throws Exception { + // admin api util init + AdminApiUtil.init(adminAddresses); + // executor start NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl()); serverFactory.start(port, ip, appName); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java index 8ea6dba3..96646d65 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java @@ -24,7 +24,9 @@ public class ExecutorRegistryThread extends Thread { private Thread registryThread; private boolean toStop = false; public void start(final int port, final String ip, final String appName){ - if (appName==null || appName.trim().length()==0) { + + // valid + if (AdminApiUtil.allowCallApi && (appName!=null && appName.trim().length()>0) ) { logger.warn(">>>>>>>>>>>> xxl-job, executor registry config fail"); return; } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/AdminApiUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/AdminApiUtil.java index 4298f3bc..eea8d3c6 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/util/AdminApiUtil.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/AdminApiUtil.java @@ -1,7 +1,6 @@ package com.xxl.job.core.util; import com.xxl.job.core.biz.model.ReturnT; -import com.xxl.job.core.executor.XxlJobExecutor; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; @@ -15,7 +14,9 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author xuxueli 2017-05-10 21:28:15 @@ -26,19 +27,31 @@ public class AdminApiUtil { public static final String CALLBACK = "/api/callback"; public static final String REGISTRY = "/api/registry"; - public static ReturnT callApiFailover(String subUrl, Object requestObj) throws Exception { + private static List adminAddressList = null; + public static boolean allowCallApi = true; + public static void init(String adminAddresses){ // admin assress list - List adminAddressList = new ArrayList(); - if (XxlJobExecutor.adminAddresses != null) { - for (String adminAddressItem: XxlJobExecutor.adminAddresses.split(",")) { - if (adminAddressItem.trim().length()>0 && !adminAddressList.contains(adminAddressItem)) { - adminAddressList.add(adminAddressItem); + if (adminAddresses != null) { + Set adminAddressSet = new HashSet(); + for (String adminAddressItem: adminAddresses.split(",")) { + if (adminAddressItem.trim().length()>0 && !adminAddressSet.contains(adminAddressItem)) { + adminAddressSet.add(adminAddressItem); } } + if (adminAddressSet==null || adminAddressSet.size()==0) { + adminAddressList = new ArrayList(adminAddressSet); + } } - if (adminAddressList==null || adminAddressList.size()==0) { - return ReturnT.FAIL; + + // parse + allowCallApi = (adminAddressList!=null && adminAddressList.size()>0); + } + + public static ReturnT callApiFailover(String subUrl, Object requestObj) throws Exception { + + if (!allowCallApi) { + return new ReturnT(ReturnT.FAIL_CODE, "allowCallback fail."); } for (String adminAddress: adminAddressList) {