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

Ant*_*nÓg 3 eclipse osgi eclipse-plugin

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

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

  1. 如果你有一个激活器,它会在下游插件调用代码之前至少运行一次,而不管这个复选框是什么?
  2. 此复选框仅适用于即时或懒惰的启动吗?

Von*_*onC 8

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

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

来自OSGI设计:

懒惰激活

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

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