一、启动项目及dubbo容器的工作流程
1.首先向System(final class)类中放入键值对-日志路径、dubbo的配置路径
System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
System.setProperty("dubbo.spring.config", "classpath*:META-INF/dubbox/*.xml,classpath*:META-INF/spring/*.xml");
2.启动dubbo容器
com.alibaba.dubbo.container.Main.main(new String[]{"wx_gws"});
- 进到com.alibaba.dubbo.container.Main的main方法:
-- 在System中查找键为"dubbo.container"对应的值,如果没有返回默认对应的值"spring"
-- final List<Container> containers = new ArrayList<Container>();
通过containers.add(loader.getExtension("spring"));
添加一个com.alibaba.dubbo.container.spring.SpringContainer容器
即,使用spring容器运行dubbo服务
-- container.start();启动dubbo容器,向zk中注册服务
start()方法中context = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+"));
context.start();
configPath-->开始时的System.setProperty("dubbo.spring.config", "classpath*:META-INF/dubbox/*.xml,classpath*:META-INF/spring/*.xml");值
--通过main方法中的
synchronized (Main.class) {
while (running) {
try {
Main.class.wait();
} catch (Throwable e) {}
}
}实现容器处于非关闭状态
启动项目及dubbo容器的初始化工作流程分析
最新推荐文章于 2024-07-19 17:36:11 发布