【问题标题】:Will eclipse/osgi activators always be called at least once before code is accessed?在访问代码之前,eclipse/osgi 激活器是否总是至少被调用一次?
【发布时间】:2009-08-10 07:59:16
【问题描述】:

在 Eclipse (3.3) 中,我有一个插件 User,具体取决于插件 ProviderProvider 有一个激活器。在提供者的插件编辑器上,它有一个复选框“加载其中一个类时激活此插件”。选中/取消选中此项将更改 Manifest 设置:Eclipse-LazyStart 为 true/false。

我的问题是,对我来说,该复选框意味着如果未选中,则激活器可能不会运行,而该设置意味着激活器将始终运行,无论您是否希望它与 eclipse 一起加载。

  1. 如果你有激活器 在 a 之前总是至少运行一次 下游插件调用代码,不管这个复选框?
  2. 此复选框是否仅适用于 立即启动还是延迟启动?

【问题讨论】:

  • 按要求完成了我的回答

标签: eclipse eclipse-plugin osgi


【解决方案1】:

Eclipse-LazyStart: true -> 表示插件将在该插件中的类加载时自动启动。
Eclipse-LazyStart: false -> 表示插件/bundle 在该插件中的类加载时不会启动。它将需要您发出明确的Bundle#start() 调用,而不是从 Equinox OSGI 框架自动启动。

是的,这本支票簿仅适用于该设置。
注意:对于OSGI4.1,也可以设置新的Bundle-ActivationPolicy setting

来自OSGI design

延迟激活

延迟激活是一种生命周期策略,它要求必须在第一次成功请求从该捆绑包加载类时激活捆绑包。
有时这被称为自动启动,因为捆绑包会在第一次加载时自动激活。
这种设计将始终使用术语惰性而不是自动,因为自动启动可能意味着每次启动框架时始终自动启动包。

这里的选择是“延迟启动 vs 不启动”,而不是“延迟启动 vs 急切启动”。
因此,即使使用 Activator,您的插件提供程序也不会启动,直到它的一个类被加载 (lazy-start true) 并显式调用(如果 lazy start false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2018-10-10
    • 2016-04-06
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多