2017-06-16 48 views
1

我有一個OSGi的組件:有效的方法來從中斷OSGi的組件被激活

@Component(immediate=true) 
public class SomeComponent implements SomeInterface {...} 

注意,該組件是即時的。另外,由於組件類正在實現一個接口,因此我明白服務將在組件激活時(作爲其一部分)自動註冊。

現在,如果滿足某些條件,我希望能夠動態地中斷組件激活和服務註冊。在一個組成活化扔「ComponentException」似乎並沒有做的工作:

@Activate 
public void activate() { 
    if (notReady) 
    throw new ComponentException("Component not ready"); 
} 

有什麼建議?謝謝!

回答

2

您無法搶先激活之前發生的服務註冊。你會更好用兩個組件。立即沒有服務決定是否啓用或禁用具有該服務的第二組件。第二個組件可以在默認情況下禁用。