我正在使用暴露服務的OSGi應用程序(帶有felix scr註釋)。服務通過傳遞字符串值來向外部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");
服務使用上面這段代碼以註冊偵聽器的我打算重複使用在不同的捆綁該服務多張價值「SCHEMA1」,「SCHEMA1」,「SCHEMA3」 ...... 。但我只想聽SCHEMA1的變化,而不是全部。
@Reference(名稱= 「的ServiceListener」」,策略= ReferencePolicy.DYNAMIC,基數= ReferenceCardinality.MANDATORY_UNARY,綁定= 「綁定」,解除綁定= 「解除綁定」,referenceInterface = ServiceListener.class) 私人的AtomicReference myServiceListener =新的AtomicReference <>();
如果我嘗試用@Reference其他服務來使用它那麼有沒有規定值傳遞給服務監聽只爲特定的模式變化,使 的服務可以是r通過只傳遞模式列表來監聽而不是所有的東西,從而跨越我的包。因爲激活方法將在服務在使用類(組件)中正確綁定後被調用。 OSGi中是否有任何規定實現此功能?