|  | @@ -1,9 +1,11 @@
 | 
	
		
			
				|  |  |  package com.xxl.job.core.executor;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.xxl.job.core.biz.AdminBiz;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.biz.ExecutorBiz;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.biz.impl.ExecutorBizImpl;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.handler.IJobHandler;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.handler.annotation.JobHander;
 | 
	
		
			
				|  |  | +import com.xxl.job.core.rpc.netcom.NetComClientProxy;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.rpc.netcom.NetComServerFactory;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.thread.ExecutorRegistryThread;
 | 
	
		
			
				|  |  |  import com.xxl.job.core.thread.JobThread;
 | 
	
	
		
			
				|  | @@ -17,6 +19,8 @@ import org.springframework.context.ApplicationEvent;
 | 
	
		
			
				|  |  |  import org.springframework.context.ApplicationListener;
 | 
	
		
			
				|  |  |  import org.springframework.context.event.ContextClosedEvent;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
		
			
				|  |  |  import java.util.concurrent.ConcurrentHashMap;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -29,7 +33,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) {
 | 
	
	
		
			
				|  | @@ -48,9 +52,32 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
 | 
	
		
			
				|  |  |          this.logPath = logPath;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // ---------------------------------- admin-client ------------------------------------
 | 
	
		
			
				|  |  | +    private static List<AdminBiz> adminBizList;
 | 
	
		
			
				|  |  | +    private static void initAdminBizList(String adminAddresses) throws Exception {
 | 
	
		
			
				|  |  | +        if (adminAddresses!=null && adminAddresses.trim().length()>0) {
 | 
	
		
			
				|  |  | +            for (String address: adminAddresses.trim().split(",")) {
 | 
	
		
			
				|  |  | +                if (address!=null && address.trim().length()>0) {
 | 
	
		
			
				|  |  | +                    String addressUrl = address.concat("/api");
 | 
	
		
			
				|  |  | +                    AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, addressUrl).getObject();
 | 
	
		
			
				|  |  | +                    if (adminBizList == null) {
 | 
	
		
			
				|  |  | +                        adminBizList = new ArrayList<AdminBiz>();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    adminBizList.add(adminBiz);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    public static List<AdminBiz> getAdminBizList(){
 | 
	
		
			
				|  |  | +        return adminBizList;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // ---------------------------------- job server ------------------------------------
 | 
	
		
			
				|  |  |      private NetComServerFactory serverFactory = new NetComServerFactory();
 | 
	
		
			
				|  |  |      public void start() throws Exception {
 | 
	
		
			
				|  |  | +        // init admin-client
 | 
	
		
			
				|  |  | +        initAdminBizList(adminAddresses);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // executor start
 | 
	
		
			
				|  |  |          NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl());   // rpc-service, base on jetty
 | 
	
		
			
				|  |  |          serverFactory.start(port, ip, appName);
 |