当用 java -jar 启动 Ark 包 或者 在 IDE 中通过 启动 Ark 应用时,相应 Launcher
入口会负责启动应用,其中会反射调用 ArkContainer
的入口,初始化 ArkService
,然后依次执行 pipeline,来完成整个 Ark 应用的启动。
当服务实现了上述接口时,在 Ark Serivce 容器启动时和停止时会调用相应的生命周期接口
Pipeline 服务
Pipeline 也是注册在 Ark Service 容器中的一个服务,服务本身是没有顺序和优先级的,在 Pipeline 中会对服务进行一些组装,同时完成整个 Ark 容器的启动
设置一些运行时需要的默认参数,比如设置 log4j.ignoreTCL
为 让 log4j/log4j2 初始化是日志不要从 ThreadContextClassloader
中寻找配置文件()
在 Ark 容器中会发布一些服务供其它的插件来使用,比如 BizDeployer
来让 SOFAArk 官方插件 sofa-jarslink 来完成 biz 的动态加载/卸载等
从 BizManagerService
中获取到所有的 Ark 业务,并执行业务配置在 MANIFEST.MF 属性 Main-Class 中提供的入口 main 函数