Java OSGi内的隔离

Java OSGi内的隔离,java,osgi,Java,Osgi,我试图理解OSGi的好处,但我不明白的是,如果用户提供的组件之一崩溃,比如OutOfMemory异常,会发生什么。这个问题是否仅限于此组件,或者整个JVM将崩溃?OSGi隔离与类解析和类加载有关。JVM进程本身是共享的。所以OOM异常将影响整个容器 如果要运行第三方组件,可能需要创建一个从根容器管理的新实例,它作为一个单独的操作系统进程运行,具有单独的JVM参数。OSGi隔离与类解析和类加载相关。JVM进程本身是共享的。所以OOM异常将影响整个容器 如果您想运行第三方组件,您可能想创建一个从根容

我试图理解OSGi的好处,但我不明白的是,如果用户提供的组件之一崩溃,比如OutOfMemory异常,会发生什么。这个问题是否仅限于此组件,或者整个JVM将崩溃?

OSGi隔离与类解析和类加载有关。JVM进程本身是共享的。所以OOM异常将影响整个容器


如果要运行第三方组件,可能需要创建一个从根容器管理的新实例,它作为一个单独的操作系统进程运行,具有单独的JVM参数。

OSGi隔离与类解析和类加载相关。JVM进程本身是共享的。所以OOM异常将影响整个容器


如果您想运行第三方组件,您可能想创建一个从根容器管理的新实例,它作为一个单独的操作系统进程运行,具有单独的JVM参数。

OSGi在类加载器级别隔离组件,并且在JVM级别发生OutOfMemoryError。OSGi不提供内存隔离。简而言之:整个JVM将崩溃。

OSGi在类加载器级别隔离组件,在JVM级别发生OutOfMemoryError。OSGi不提供内存隔离。简而言之:整个JVM将崩溃。

OSGi不提供捆绑包或组件之间的内存或CPU隔离。OSGi框架中的所有捆绑包都在Java虚拟机中运行,Java本身没有提供这种隔离的能力。OSGi只能做标准Java体系结构中可能做的事情

如果您想要更好的隔离,那么使用单独的操作系统进程。记住:世上没有完美的隔离。如果您作为单独的进程运行,那么流氓进程总是有可能破坏整个操作系统。即使您在同一数据中心的另一台计算机上运行,下一次断电或海啸也会影响这两台计算机。因此,你必须问问自己需要多少隔离,需要缓解哪些具体风险


值得一提的是,很久以前Java内部曾尝试提供内存和CPU隔离。这就是JSR-121应用程序隔离API,它从未被JavaSE采用。一些供应商,如IBM和Waratek,实现了专有的隔离/多租户,但这些供应商并没有抓住Waratek后来转向应用程序安全的机会。基本上,您最终在JVM中实现了一个进程调度器,那么当操作系统已经有了一个好的调度器时,还有什么意义呢?

OSGi不提供捆绑包或组件之间的内存或CPU隔离。OSGi框架中的所有捆绑包都在Java虚拟机中运行,Java本身没有提供这种隔离的能力。OSGi只能做标准Java体系结构中可能做的事情

如果您想要更好的隔离,那么使用单独的操作系统进程。记住:世上没有完美的隔离。如果您作为单独的进程运行,那么流氓进程总是有可能破坏整个操作系统。即使您在同一数据中心的另一台计算机上运行,下一次断电或海啸也会影响这两台计算机。因此,你必须问问自己需要多少隔离,需要缓解哪些具体风险

值得一提的是,很久以前Java内部曾尝试提供内存和CPU隔离。这就是JSR-121应用程序隔离API,它从未被JavaSE采用。一些供应商,如IBM和Waratek,实现了专有的隔离/多租户,但这些供应商并没有抓住Waratek后来转向应用程序安全的机会。基本上,您最终在JVM中实现了一个进程调度器,而当操作系统已经有了一个好的调度器时,又有什么意义呢