タイトルが示すように、私はOSGI +SpringDMに問題があります。
私のプロジェクト設計では、サービスsvBを必要とし、サービスsvAをエクスポートするバンドルAがあります。バンドルBはsvAを必要とし、svBをエクスポートします(もちろん、とりわけ)。両方のバンドルがもう一方のバンドルがオンラインになるのを待っているように見えるため、これがデッドロックを引き起こしているようです。Spring DMでそのようなデッドロックは可能ですか?これに対する解決策はありますか?
タイトルが示すように、私はOSGI +SpringDMに問題があります。
私のプロジェクト設計では、サービスsvBを必要とし、サービスsvAをエクスポートするバンドルAがあります。バンドルBはsvAを必要とし、svBをエクスポートします(もちろん、とりわけ)。両方のバンドルがもう一方のバンドルがオンラインになるのを待っているように見えるため、これがデッドロックを引き起こしているようです。Spring DMでそのようなデッドロックは可能ですか?これに対する解決策はありますか?
これはSpring-DMの問題のようには聞こえませんが、このデッドロックに備えています。AはBに依存し、BはAに依存しているため、誰も作業を行うことができません。これから抜け出すには、おそらくデザインを変更し、AまたはBのいずれかをもう一方なしで開始できるようにする必要があります。一方、もう一方には遅延読み込みロジックが組み込まれており(これがあなたの仕事になります)、もう一方が独自にオンラインになったときに起動シーケンスを続行する必要があります。
OSGi宣言型サービスを使用すると、サービスへの依存関係を宣言できますが、開始時にサービスが存在しないようにすることができます(カーディナリティオプションを使用してこれを行います)。