2 つのデータベース接続を必要とする RCP 3.7 アプリケーションがあります。各データベースのコードは個別のバンドルにあります。以前は、データベースの起動は Activator.start() メソッドで行われていました。データベースの起動を 2 つの Declarative Services に移動するために、コードを大幅にリファクタリングしました。これにより、バンドル間での密結合と過剰なパッケージ公開を解消するという目標が達成されました (ほとんどすべてがエクスポートされました)。
私が今抱えている課題は、2 つのサービスが十分に速く開始されず、ワークベンチがロードされ、スレッド違反が発生することです。私は両方のサービスをimmediate = trueに設定しています。バンドルの開始順序は、-1 (デフォルト) で eclipse.osgi、2 で equinox.ds および equinox.common、デフォルトで core.runtime です。バンドルに開始レベルを追加しようとしましたが、役に立たなかったので削除しました。
サービスが戻る前にデータベースを確実に開始する方法について、何か考えや提案はありますか?