|
@ -10,7 +10,9 @@ import org.apache.camel.builder.RouteBuilder;
|
|
|
import org.apache.camel.processor.interceptor.DefaultTraceFormatter;
|
|
|
import org.apache.camel.processor.interceptor.Tracer;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
|
|
|
|
|
|
import java.net.URL;
|
|
|
import java.net.URLClassLoader;
|
|
@ -29,6 +31,9 @@ public class CamelStartBoot {
|
|
|
private BrokerServerService brokerServerService;
|
|
|
private CamelContext context = SystemCamelContext.getContext();
|
|
|
|
|
|
@Autowired
|
|
|
private AutowireCapableBeanFactory capableBeanFactory;
|
|
|
|
|
|
@Autowired
|
|
|
public void setBrokerServerService(BrokerServerService brokerServerService) {
|
|
|
this.brokerServerService = brokerServerService;
|
|
@ -47,7 +52,7 @@ public class CamelStartBoot {
|
|
|
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
|
|
|
ClassLoader camelClassLoader = new URLClassLoader(URLs.toArray(new URL[]{}), currentClassLoader);
|
|
|
Thread.currentThread().setContextClassLoader(camelClassLoader);
|
|
|
context.setApplicationContextClassLoader(camelClassLoader);
|
|
|
context.setApplicationContextClassLoader(currentClassLoader);
|
|
|
logger.info("Apache Camel Context 启动完成...");
|
|
|
|
|
|
|
|
@ -61,6 +66,8 @@ public class CamelStartBoot {
|
|
|
Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) camelClassLoader.loadClass(className);
|
|
|
if (routeBuilderClass != null) {
|
|
|
RouteBuilder routeBuilder = routeBuilderClass.newInstance();
|
|
|
capableBeanFactory.autowireBean(routeBuilder);
|
|
|
|
|
|
context.addRoutes(routeBuilder);
|
|
|
}
|
|
|
} catch (ClassNotFoundException e) {
|