java - osgi bundle生命周期问题

标签 java eclipse osgi bundle equinox

我尝试了解 osgi 的工作原理。我已经编写了我的第一个 hello-world 包,它在执行包激活器类的启动方法时提供一些控制台输出。现在,我已经了解了惰性启动机制,并将此标志放入我的 bundle list 中。然后,我启动了 equinox 控制台,安装了我的包并启动了它。但现在我希望我的包被标记为“开始”。但是它已经调用了它的启动方法并被标记为 Activity 的。 我理解延迟启动机制有什么问题吗???

最佳答案

当您有依赖于您的 bundle 和 bundle 中的类的其他 bundle 时,将使用 lazy-start 标志。

假设您有两个包 A 和 B,其中

  • A 导出类 C
  • B 依赖于 A
  • B 包含引用 C 的类 D

当 bundle B 被激活时会发生什么?

没有延迟加载标志,首先加载并激活 A 包。

使用延迟加载标志,直到类 D 需要引用类 C 时才会加载或激活 A 包。

这可以在激活配置文件中产生非常大的差异,因为使用延迟加载标志将 bundle 的加载和激活推迟到尽可能晚的时间,因此来自 bundle 的初始响应非常快...

相反,这个标志也使得推断 B 中方法的执行时间变得更加困难,因为这可以随时通过加载和激活 bundle 来拦截....

关于java - osgi bundle生命周期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715909/

相关文章:

java - 为什么heroku构建由于gradle和spring boot而失败?

java - 配置XStream动态映射到不同的对象

java - 卡夫卡 : Running Confluent in a Windows environment

java - Spring 无法定位 OSGi 命名空间处理程序

java - postman 显示 HTML 而不是 JSON

java.lang.IllegalStateException : Trying to requery an already closed cursor error 错误

java - 我的项目中没有 persistence.xml,为什么?

java - Eclipse 的 GWT 2.5 插件

maven - 我们如何为pom.xml创建一个build.gradle等效文件来构建和部署AEM代码?

xpath - 在OSGi容器中运行时,如果Class对象的classloader为null,那意味着什么?