OSGi框架可以同时启动捆绑吗?

时间:2012-05-17 18:31:58

标签: java osgi bundle system-properties

我们有两个捆绑包,都嵌入了相同第三方库的不同版本,我们必须使用不同的配置。不幸的是,库只能通过系统属性进行配置。

因此,我们尝试执行以下Activator类:

  1. 设置所需的系统属性,
  2. 初始化库,
  3. 取消设置以前的系统属性。
  4. 如果OSGi框架同时启动两个bundle,它将无法工作。是否允许OSGi框架实现?这个解决方案安全吗?有没有其他方法可以为不同的包设置相同的系统属性为不同的值?

    (如果有可能我们希望避免为这些捆绑设置不同的启动级别。)

4 个答案:

答案 0 :(得分:3)

允许OSGi框架实现同时在给定的启动级别内启动bundle。因此,您可以将捆绑包放在不同的起始级别,以确保一个在另一个之前启动。

答案 1 :(得分:1)

在Felix和Equinox中,bundle install / resolve / start / stop / uninstall操作都发生在一个线程上。我无法回想起激活器是否在同一个线程上运行,但我认为它们确实存在。

答案 2 :(得分:1)

如何创建包装库初始化的OSGi服务呢?所以你只需要做一次。或者,服务可以同步初始化,因此确保它不会同时发生。

答案 3 :(得分:0)

强烈要求将它们放在单独的捆绑包中吗? 你如何处理这些库,将它们作为java包导出还是用它们创建服务? 如果您可以将两个库放在同一个包中,那么您将拥有完全控制权,该控制权首先被初始化,并且在一秒内被初始化。

如果您使用Export-Package将它们导出到捆绑包清单中,请注意,即使捆绑包处于RESOLVED状态(即已安装但尚未启动),其他捆绑包也可以使用导出的包。所以有人可能会在创建Bundle Activator之前调用lib的方法,并且已经处理了初始化....

相关问题