私はこのシナリオを持っていますが、私は同じインタフェースを提供する3つの宣言型サービスを持っています(リーダーインターフェイスと私はreadimpl1データベースreadimpl2フラットファイルreadimpl3メモリを持っています)。私は、データベース実装にのみバインドするコンシューマを持っていたいと思います。コンポーネント定義では名前を付けるので、その名前がレジストリにあることを確信しています。アクティブメソッドを追加すると、名前を使用してコンポーネントコンテキストから参照できます。Osgi宣言的サービス条件付きバインディング
パラメータとしてサービス名を使用してもバインド/バインド解除で試してみたいと思います。私はかなりコンポーネントの参照要素の "ターゲット"パラメータがこれを行うために使用することができますが、私はそれを使用する方法を見つけていないと確信しています。
他にもこれを行っていますか?
これは
本当に興味深い質問です。それはあなたが*データベースのimplを好むが、別のものを受け入れるかどうかの関連する問題を考えさせる。このシナリオでは、@Reference(cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE、policy = ReferencePolicy.DYNAMIC)を使用して実装し、追加/削除メソッドのリストを調べることができます。 –