294.2. SCR での AbstractCamelRunner のライフサイクル
-
コンポーネントの設定ポリシーと必須の参照が満たされると、SCR は
activate()
を呼び出します。これにより、activate()
→prepare()
→createCamelContext()
→setupPropertiesComponent()
→configure()
→setupCamelContext()
の呼び出しチェーンを通じて CamelContext が作成および設定されます。最後に、コンテキストは、runWithDelay()
を使用してAbstractCamelRunner.START_DELAY
で定義された遅延の後に開始するようにスケジュールされます。 -
Camel コンポーネント (正確には
ComponentResolver
サービス) が OSGi に登録されると、SCR はgotCamelComponent`
()` を呼び出します。これは、同じAbstractCamelRunner.START_DELAY
によって CamelContext の開始を再スケジュール/遅延させます。これにより、CamelContext は、すべての Camel コンポーネントがロードされるか、それらの間に十分なギャップができるまで待機します。同じロジックにより、Camel コンポーネントをさらに追加するたびに、起動に失敗した CamelContext に再試行するように指示されます。 -
Camel コンポーネントが未登録の場合、SCR は
lostCamelComponent`
()` を呼び出します。この呼び出しは何もしません。 -
activate
を呼び出します。これにより、CamelContext がシャットダウンされます。()
の呼び出しの原因となった要件の 1 つが失われると、SCR はactivate
()
(非 OSGi) 単体テストでは、よりきめ細かい制御のために、prepare()
→ run()
→ stop()
instead of activate()
→ deactivate()
を使用する必要があります。また、これにより、テストで発生する可能性のある SCR 固有の操作を回避できます。