我在OSGI中有点陌生,我想要以下几点:仅在满足某些先决条件时激活我的捆绑包(顺便说一句,我们从一个本地库中获得了,但这是另一回事了)。 AFAIK可以通过@Reference DS来实现,但是我没有完全理解。我的意思是,如果我在@Activate DS之前写这样的内容:
@Reference
public AnotherService as
@Activate
public void activate() {
//some code
}
这实际上意味着,在激活AnotherService之前,我的捆绑包不会被激活。但是我可以在AnotherService
或捆绑包中写这样的东西吗:
)时激活我的捆绑包,或者在不满足条件时将其停用。它不适合我:“仅执行if语句,如果不满意,什么也不做,但仍然被激活”,因为此捆绑包的“激活”资源非常繁重。也许我对OSGI的想法完全错误。@Activate public void activate() { if (condition){ deactivate() } //some code } @Deactivate public void deactivate() { //some code }
据我了解,这是不可能的。然后出现了问题:如何根据某些条件控制捆绑软件或其引用的激活?即我希望在满足条件(激活前
我在OSGI中有点陌生,我想要以下几点:仅在满足某些先决条件时激活我的捆绑包(顺便说一句,我们从一个本地库中获得了,但这是另一回事了)。可能是...
这不是您应该做的。只要您的捆绑包可以解析(即满足其所有导入和其他静态依赖关系),就应始终将其激活。