私はサービスを公開するOSGiアプリケーション(felix scrアノテーション付き)に取り組んでいます。サービスは、String値を渡すことによって外部APIを登録します。OSGi felix scrアノテーションでサービスするランタイムパラメータを渡す
listener.addSchemaChangeListener(new ChangeListener()
{
@Override
public void schemaChange(ChangeEvent changeEvent)
{
String schemaName = changeEvent.getSchemaName();
if (null != myBuilder && schemaList.contains(schemaName))
{
initVariables();
}
}
}, "SCHEMA1");
サービスは、私は、様々なバンドルで、このサービスを再利用する予定ですmulitple値「SCHEMA1」、「SCHEMA1」、「SCHEMA3」... のリスナーを登録するには上記のコード部分を使用しています。しかし、私はすべての代わりにSCHEMA1の変更だけを聞きたいです。
@Reference(名= "ServiceListener"」、ポリシー= ReferencePolicy.DYNAMIC、基数= ReferenceCardinality.MANDATORY_UNARY、バインド= "バインド"、アンバインド= "アンバインド"、referenceInterface = ServiceListener.class) プライベートAtomicReference myServiceListener =新しいAtomicReference <>();
私は@Referenceで別のサービスでそれを使用しようとすると、その後 ように、特定のスキーマの変更をリッスンするためにサービスを提供するために値を渡すために何の規定はありませんサービスはr私のバンドルでは、スキーマのリストを渡すだけですべての代わりに聞くことができます。 activateメソッドは、いったんサービスが使用クラス(コンポーネント)で正しくバインドされると呼び出されるためです。 この機能を実現するためのOSGiの規定はありますか?