kettle环境初始化
程序启动时会初始化kettle的运行环境,例如,spoon启动时main方法就会调用KettleEnvironment.init()来为spoon的运行环境作初始化。通过KettleEnvironment.init()来初始化环境时,会读取属性文件、注册插件等,以init()方法为切入点,调试了一下源码,大概整理了一下脉络,并简单记录下来:
- 调用KettleClientEnvironment.init()方法初始化客户端环境,具体的子流程以下:
- 创建.kettle目录,并在该目录下创建一个默认的kttle.properties文件---createKettleHome()
- 读取kettle.properties文件,把内容设置到系统变量中---EnvUtil.environmentInit()
- 初始化一些日志配置
- 注册插件类型(5种类型)并进行初始化---PluginRegistry.init( true )
- 如果运行在一个standalone model(例如spoon,kitche,carte),则会初始化JNDI,具体细节查看JndiUtil.initJNDI()
- 把本地插件类型(RowDistributionPluginType,StepPluginType,PartitionerPluginType,JobEntryPluginType,LogTablePluginType,RepositoryPluginType,
LifecyclePluginTypeKettleLifecyclePluginType,ImportRulePluginType,CartePluginType,CompressionPluginType,AuthenticationProviderPluginType,
AuthenticationConsumerPluginType)添加到PluginRestry类的pluginTypes:List<PluginTypeInterface>中 - 调用PluginRegistry.init()进行初始化插件
- 初始化kettle变量,其实是解析kettle-variables.xml并保存里面的配置到List里---KettleVariablesList.init()
- 初始化生命周期监听器---initLifecycleListeners()
- 初始化日志插件---initLoggingPlugins()
流程图表示:
时间: 2024-09-27 17:58:49