| 
					
				 | 
			
			
				@@ -1,7 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.xxl.job.core.rpc.netcom.jetty.server; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xxl.job.core.registry.RegistHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.xxl.job.core.util.IpUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xxl.job.core.thread.ExecutorRegistryThread; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.eclipse.jetty.server.Connector; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.eclipse.jetty.server.Handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.eclipse.jetty.server.Server; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,8 +11,6 @@ import org.eclipse.jetty.util.thread.ExecutorThreadPool; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.concurrent.TimeUnit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * rpc jetty server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @author xuxueli 2015-11-19 22:29:03 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,9 +19,9 @@ public class JettyServer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private static final Logger logger = LoggerFactory.getLogger(JettyServer.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private Server server; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private Thread thread; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void start(final int port, final String ip, final String appName, final RegistHelper registHelper) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Thread thread = new Thread(new Runnable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		thread = new Thread(new Runnable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			public void run() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				server = new Server(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -43,7 +41,7 @@ public class JettyServer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					logger.info(">>>>>>>>>>>> xxl-job jetty server start success at port:{}.", port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					executorRegistryBeat(port, ip, appName, registHelper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					ExecutorRegistryThread.getInstance().start(port, ip, appName, registHelper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					server.join();	// block until thread stopped 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					logger.info(">>>>>>>>>>> xxl-rpc server start success, netcon={}, port={}", JettyServer.class.getName(), port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -65,43 +63,10 @@ public class JettyServer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				logger.error("", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		logger.info(">>>>>>>>>>> xxl-rpc server destroy success, netcon={}", JettyServer.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * registry beat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param ip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param appName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * @param registHelper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private void executorRegistryBeat(final int port, final String ip, final String appName, final RegistHelper registHelper){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (registHelper==null && appName==null || appName.trim().length()==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (thread.isAlive()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			thread.interrupt(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Thread registryThread = new Thread(new Runnable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			public void run() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						// generate addredd = ip:port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						String address = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if (ip != null && ip.trim().length()>0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							address = ip.trim().concat(":").concat(String.valueOf(port)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							address = IpUtil.getIpPort(port); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						registHelper.registry(RegistHelper.RegistType.EXECUTOR.name(), appName, address); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						TimeUnit.SECONDS.sleep(RegistHelper.TIMEOUT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		registryThread.setDaemon(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		registryThread.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		logger.info(">>>>>>>>>>> xxl-rpc server destroy success, netcon={}", JettyServer.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |