启动入口Start.java分析
框架的启动器在包:org.ofbiz.base.start
入口为:Start.java的main方法
Start.java启动器内容:
步骤 |
详情 |
入参校验 |
help/status/shutdown/还是执行命令 |
加载配置 |
从环境变量ofbiz.system.props获取配置文件 |
初始化classpath加载类库 |
类库列表见Config.java的initClasspath()和readConfig() |
初始化日志文件夹 |
- |
创建监听线程 |
启动socket server,监听0端口(具体见ofbiz.admin.port属性,在start.properties或其他) |
向runtime加入addShutdownHook |
在退出时触发,做优雅退出 |
初始化StartLoaders |
创建启动器实例列表,多数是ContainerLoader一个元素,某些情况下还有SplashLoader。 Start.java的initStartLoaders() -> ContainerLoader.java的load() -> loadContainer() -> ComponentContainer.java的init()->loadComponents()->loadComponentFromConfig()->loadComponentDirectory() ->File configFile = FileUtil.getFile(componentLocation + "/ofbiz-component.xml");->循环调用loadComponent()把模块的jar包加入classpath 其中ComponentConfig.java是xml文件在java中的解析。 |
start()->StartupLoader的start()->容器的start() |
容器列表默认来自framework/base/config/ofbiz-containers.xml |
启动入口Start.java分析的更多相关文章
- django启动入口源码分析
manage.py是启动入口,在里面调用execute_from_command_line(sys.argv)方法 def execute_from_command_line(argv=None): ...
- Android系统进程Zygote启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6768304 在Android系统中,所有的应用 ...
- 涨姿势:Spring Boot 2.x 启动全过程源码分析
目录 SpringApplication 实例 run 方法运行过程 总结 上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入 ...
- Spark(五十一):Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二)
上篇<Spark(四十九):Spark On YARN启动流程源码分析(一)>我们讲到启动SparkContext初始化,ApplicationMaster启动资源中,讲解的内容明显不完整 ...
- Spark(四十九):Spark On YARN启动流程源码分析(一)
引导: 该篇章主要讲解执行spark-submit.sh提交到将任务提交给Yarn阶段代码分析. spark-submit的入口函数 一般提交一个spark作业的方式采用spark-submit来提交 ...
- Activity启动过程源码分析(Android 8.0)
Activity启动过程源码分析 本文来Activity的启动流程,一般我们都是通过startActivity或startActivityForResult来启动目标activity,那么我们就由此出 ...
- Spring Boot的自动配置原理及启动流程源码分析
概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块, ...
- SpringBoot启动流程源码分析
前言 SpringBoot项目的启动流程是很多面试官面试中高级Java程序员喜欢问的问题.这个问题的答案涉及到了SpringBoot工程中的源码,也许我们之前看过别的大牛写过的有关SpringBoot ...
- worker启动executor源码分析-executor.clj
在"supervisor启动worker源码分析-worker.clj"一文中,我们详细讲解了worker是如何初始化的.主要通过调用mk-worker函数实现的.在启动worke ...
随机推荐
- C#中动态调用DLL动态链接库(转)
本来是想实现控制台程序运行时自动全屏,但是只找到VC下的实现方法(http://www.vckbase.com/bbs/prime/viewprime.asp?id=347). 其中要使用两个未公开的 ...
- pxe-kickstart
PXE client--->DHCP(pxelinux.0; next-server tftp-server) syslinux vmlinuz initrd.img ks.cfg--- ...
- selenium+Python(表单、多窗口切换)
1.多表单切换 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...
- div 移动
2011-05-12 10:10 jquery实现DIV层拖动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- 深入redis内部--事件处理机制
1. redis事件的定义 /* State of an event based program */ typedef struct aeEventLoop { int maxfd; /* highe ...
- Atom编辑器汉化
Atom编辑器汉化成中文版 其他分享 7个月前 (04-04) 426浏览 0评论 Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器.小松今天看到了这个编辑器,而且感觉不错,推荐一下 ...
- SQL Server 2008中的MERGE(数据同步)
OK,就像标题呈现的一样,SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演 ...
- Expression Blend实例中文教程(2) - 界面快速入门
上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Ble ...
- github上传的项目代码语言类型修改
我们在访问gitHub的时候,经常会看到如下的语言标记,那么这个是如何设置的呢,下面我就整理下具体的操作步骤: 首先在项目根目录下创建一个文件,文件名为.gitattributes 文件内容为: *. ...
- mycat安装
一.简介 在互联网数据大爆炸时代,对数据处理的要求越来越高,很明显单实例数据库已经不能满足需求了,这时候数据库的中间件便应运而生.中间件聚集多实例来提供更强的处理能力,并且隐藏了多实例产生的复杂性.m ...