我的意思是某些方面,例如通过不同的ClassLoader隔离同一工件的不同版本,例如.Net允许通过不同的AppDomain隔离程序集。
答案 0 :(得分:1)
我不这么认为。 OSGi是一种在结构上定义和实施应用程序不同部分之间的边界和依赖关系的方法。
它不是,是一个应用程序容器,不同的应用程序可以或多或少地彼此不知道,比如像Tomcat这样的servlet容器。
有两种解决方案,例如Apache Karaf,它基本上是一个基于OSGi的应用程序容器。在这些容器中,每个应用程序都有自己的OSGi环境。
答案 1 :(得分:0)
@ Frank
" Apache Karaf,它基本上是一个基于OSGi的应用程序容器。在这些容器中,每个应用程序都有自己的OSGi环境。"
我不这么认为。在Karaf(或ServiceMix)中部署OSGi组件时,无法指定特定的应用程序。例如像:osgi:install componentX.jar Application1
所以似乎没有应用程序边界。部署在同一SMX或Karaf实例中的所有OSGi模块可以相互看到并导入彼此的功能。
对于SMX,这是一个ESB,这很糟糕......
有人可以证实吗?
另外......一些OSGi模块只是库,有些是应用程序(例如,监听端口做某事)。
我认为一切都在1 JVM上运行......
有人请确认一下......
Appdomains是另一回事。 OSGi没有提供这个概念。我们需要吗?