启动入口Start.java分析

框架的启动器在包:org.ofbiz.base.start

入口为:Start.javamain方法 

Start.java启动器内容:

步骤

详情

入参校验

help/status/shutdown/还是执行命令

加载配置

从环境变量ofbiz.system.props获取配置文件
根据命令获取配置文件org/ofbiz/base/start/" + 命令 + ".properties
关于配置和变量加载,重点关注/framework/start/src/org/ofbiz/base/start/Config.java的readConfig(String config)

初始化classpath加载类库

类库列表见Config.javainitClasspath()readConfig()

初始化日志文件夹

-

创建监听线程

启动socket server,监听0端口(具体见ofbiz.admin.port属性,在start.properties或其他)

runtime加入addShutdownHook

在退出时触发,做优雅退出

初始化StartLoaders

创建启动器实例列表,多数是ContainerLoader一个元素,某些情况下还有SplashLoader

Start.javainitStartLoaders() -> ContainerLoader.javaload() -> loadContainer()

-> ComponentContainer.java的init()->loadComponents()->loadComponentFromConfig()->loadComponentDirectory()

->File configFile = FileUtil.getFile(componentLocation + "/ofbiz-component.xml");->循环调用loadComponent()把模块的jar包加入classpath

其中ComponentConfig.java是xml文件在java中的解析。

start()->StartupLoaderstart()->容器的start()

容器列表默认来自framework/base/config/ofbiz-containers.xml

原文地址:https://www.cnblogs.com/syjkfind/p/4857116.html