OSGI包中调用组件激活方法的顺序

时间:2017-02-02 10:00:01

标签: osgi cq5 aem

在OSGI包中,我们可以有很多具有Activate方法的组件。在激活包之后它们将被调用的顺序是什么?

4 个答案:

答案 0 :(得分:3)

一旦所有强制性引用都存在,组件将被激活。如果在某个时间可以激活多个组件,那么您无法保证序列。

答案 1 :(得分:2)

如果捆绑包具有不同的启动级别,那么较低启动级别的捆绑包的所有激活方法将在更高启动级别的捆绑包激活方法之前执行。

使用此逻辑,您可以控制激活方法序列,也可以根据日志确定发生的情况。

实际上,您的捆绑包必须按依赖项而不是起始级别进行排序。

答案 2 :(得分:1)

正如Christian所说,未定义。一旦依赖性得到满足,OSGI将激活该服务。

作为第二点 - 您的服务不应该依赖于启动顺序。如果他们这样做是不好的做法。为什么这与您的项目相关?也许我们可以帮助你构建它。

答案 3 :(得分:1)

正如其他人所指出的那样,这没有定义。

尽管如此,有时候有充分的理由在激活期间按给定顺序调用多个方法。如果是这种情况,您可以始终使用一个“激活”方法来调用所有其他方法。这样您就可以应用最适合您用例的订单逻辑。如果需要,它甚至可以考虑配置值。