4

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

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

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

1 回答 1

9

Eclipse-LazyStart: true ->意味着插件将在插件中的类被加载时自动启动。
Eclipse-LazyStart: false ->意味着当插件中的类被加载时插件/包将不会启动。它需要Bundle#start()您的显式调用,而不是从 Equinox OSGI 框架自动启动。

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

来自OSGI 设计

延迟激活

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

这里的选择是“惰性启动 vs 无启动”,而不是“惰性启动 vs 急切启动”。
因此,即使使用 Activator,您的插件 Provider 也不会启动,直到它的一个类被加载 ( lazy-start true) 并显式调用 (if lazy start false)

于 2009-08-10T08:25:44.937 回答