仅在满足特定条件时才激活OSGI捆绑软件?

问题描述 投票:1回答:1

我在OSGI中有点陌生,我想要以下几点:仅在满足某些先决条件时激活我的捆绑包(顺便说一句,我们从一个本地库中获得了,但这是另一回事了)。 AFAIK可以通过@Reference DS来实现,但是我没有完全理解。我的意思是,如果我在@Act​​ivate DS之前写这样的内容:

@Reference
public AnotherService as

@Activate
public void activate() {
   //some code 
}

这实际上意味着,在激活AnotherService之前,我的捆绑包不会被激活。但是我可以在AnotherService或捆绑包中写这样的东西吗:

@Activate
public void activate() {
   if (condition){
       deactivate()
   }
   //some code 
}

@Deactivate
public void deactivate() {
//some code
}

据我了解,这是不可能的。然后出现了问题:如何根据某些条件控制捆绑软件或其引用的激活?即我希望在满足条件(激活前

)时激活我的捆绑包,或者在不满足条件时将其停用。它不适合我:“仅执行if语句,如果不满意,什么也不做,但仍然被激活”,因为此捆绑包的“激活”资源非常繁重。也许我对OSGI的想法完全错误。

我在OSGI中有点陌生,我想要以下几点:仅在满足某些先决条件时激活我的捆绑包(顺便说一句,我们从一个本地库中获得了,但这是另一回事了)。可能是...

java reference osgi osgi-bundle
1个回答
0
投票

这不是您应该做的。只要您的捆绑包可以解析(即满足其所有导入和其他静态依赖关系),就应始终将其激活。

© www.soinside.com 2019 - 2024. All rights reserved.