kettle環境初始化

背景

程序啓動時會初始化kettle的運行環境,例如,spoon啓動時main方法就會調用KettleEnvironment.init()來爲spoon的運行環境作初始化。通過KettleEnvironment.init()來初始化環境時,會讀取屬性文件、註冊插件等,以init()方法爲切入點,調試了一下源碼,大概整理了一下脈絡,並簡單記錄下來:

步驟

  1. 調用KettleClientEnvironment.init()方法初始化客戶端環境,具體的子流程以下:
    1. 創建.kettle目錄,並在該目錄下創建一個默認的kttle.properties文件—createKettleHome()
    2. 讀取kettle.properties文件,把內容設置到系統變量中—EnvUtil.environmentInit()
    3. 初始化一些日誌配置
    4. 註冊插件類型(5種類型)並進行初始化—PluginRegistry.init( true )
  2. 如果運行在一個standalone model(例如spoon,kitche,carte),則會初始化JNDI,具體細節查看JndiUtil.initJNDI()
  3. 把本地插件類型RowDistributionPluginType,StepPluginType,PartitionerPluginType,JobEntryPluginType,LogTablePluginType,
    RepositoryPluginType,LifecyclePluginTypeKettleLifecyclePluginType,ImportRulePluginType,CartePluginType,CompressionPluginType,
    AuthenticationProviderPluginType,AuthenticationConsumerPluginType
    添加到PluginRestry類的pluginTypes:List
  4. 調用PluginRegistry.init()進行初始化插件
  5. 初始化kettle變量,其實是解析kettle-variables.xml並保存裏面的配置到List裏—KettleVariablesList.init()
  6. 初始化生命週期監聽器—initLifecycleListeners()
  7. 初始化日誌插件—initLoggingPlugins()

流程圖

Created with Raphaël 2.1.0KettleEnvironment.init()方法調用KettleClientEnvironment.init()方法初始化客戶端環境JndiUtil.initJNDI():初始化JNDI,當運行在一個standalone model(spoon,kitche,carte)註冊本地插件類型(13種,如StepPluginType等),並進行初始化PluginRegistry.init()KettleVariablesList.init():初始化kettle變量,其實是解析kettle-variables.xml並保存裏面的配置到List裏initLifecycleListeners():初始化生命週期監聽器;initLoggingPlugins():初始化日誌插件結束
Created with Raphaël 2.1.0調用KettleClientEnvironment.init()方法初始化客戶端環境createKettleHome:創建.kettle目錄,並在該目錄下創建一個默認的kttle.properties文件EnvUtil.environmentInit():讀取kettle.properties文件,把內容設置到系統變量中初始化一些日誌配置 註冊插件類型(5種類型)並進行初始化:PluginRegistry.init( true );結束
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章