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