| 
					
				 | 
			
			
				@@ -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); 
			 |