在访问代码之前,是否会始终至少调用一次eclipse / osgi激活器?

时间:2009-08-10 07:59:17

标签: eclipse eclipse-plugin osgi

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

我的问题是,对我来说,复选框意味着如果取消选中激活器可能无法运行,而设置意味着激活器将始终运行,只是您是否希望它是否使用eclipse加载。 / p>

  1. 如果你有一个激活剂,它会 在a之前总是至少运行一次 下游插件调用代码,不管这个复选框?
  2. 此复选框仅适用于 立即或懒惰的开始?

1 个答案:

答案 0 :(得分:8)

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

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

来自OSGI design

  

延迟激活

     

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

这里的选择是“lazy-start vs no-start”,而不是“lazy-start vs eager-start”。
因此,即使使用Activator,您的插件提供程序也不会启动,直到其中一个类被加载(lazy-start true)并明确调用(如果lazy start false