| 
					
				 | 
			
			
				@ -5,6 +5,7 @@ import org.apache.camel.builder.RouteBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.log4j.LogManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.log4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URLClassLoader; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -16,6 +17,7 @@ import java.util.concurrent.SynchronousQueue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @author Airhead 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @since 2016/12/9. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CamelStartBoot { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static Logger logger = LogManager.getLogger(ESBCamelService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -41,26 +43,33 @@ public class CamelStartBoot { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SystemCamelContext.getContext().setApplicationContextClassLoader(camelClassLoader); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("Apache Camel Context 启动完成..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            brokerServerService.login(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //如果没有收到其它线程的加载请求,主线程将停止在这里,所以该while之后不能有其他业务逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SynchronousQueue<String> camelContextOperateQueue = SystemCamelContext.getQueue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String className = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 如果没有收到其它线程的加载请求,主线程将停止在这里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String className; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while ((className = camelContextOperateQueue.take()) != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (routeBuilderClass != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    RouteBuilder routeBuilder = routeBuilderClass.newInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    SystemCamelContext.getContext().addRoutes(routeBuilder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (routeBuilderClass != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        RouteBuilder routeBuilder = routeBuilderClass.newInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        SystemCamelContext.getContext().addRoutes(routeBuilder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                catch (ClassNotFoundException e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.error("加载数据Class失败。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            brokerServerService.online(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error("Apache Camel Context 启动失败..."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error("Apache Camel Context 启动失败。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void shutdown() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        brokerServerService.offline(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        brokerServerService.logout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |