【问题标题】:Can osgi run multiple instances of the same bundleosgi可以运行同一个bundle的多个实例吗
【发布时间】:2018-12-29 15:40:01
【问题描述】:

我想做的是在同一个 JVM 上运行多个以原始模式启动的 Clojure 环境。必须保证它们的命名空间和生成的类不会相互冲突。

看这个问题:osgi - multiple instances of a service,我需要澄清运行同一服务的多个实例是否会解决命名空间破坏问题。

【问题讨论】:

  • 您可能在询问org.osgi.framework.ServiceFactory。关心指定您计划如何实例化环境吗?或者谁来做?
  • @MarcosZolnowski,我想构建一个 jupyter 类型的环境,以便用户可以创建一个笔记本实例,连接到它,进行计算,然后在完成后关闭它。每个笔记本实例应该有相互分离的环境,包括加载的类。

标签: osgi osgi-bundle


【解决方案1】:

是的,如果使用属性org.osgi.framework.bsnversion=multiple 启动框架,显然可以。

我没试过,不知道能不能用。

如果您想隔离 ClassLoader,最好为每个实例创建一个子 ClassLoader

【讨论】:

  • 严格来说,您可以安装同一捆绑包/版本组合的多个实例。 OSGi 框架必须以属性org.osgi.framework.bsnversion=multiple 启动(请参阅OSGi Core spec)。然而,这并不是 OP 问题的真正解决方案。
  • 这对我来说是新的。它是在 OSGi 4.3 中引入的,对吧?
  • 类似的东西,是的。引入它是为了支持子系统。在我看来,这不是一个好主意。
  • 我认为类加载器隔离不会解决问题。可能有两个类加载器加载同一个类,这些类会互相破坏
  • @NeilBartlett 这可能会起作用,但我不确定跟踪将如何起作用。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2015-05-19
  • 2010-11-10
  • 2014-09-26
相关资源
最近更新 更多