OSGI缓存目录

时间:2018-10-02 19:25:42

标签: java osgi

我有一个Java OSGI应用程序,似乎OSGI缓存目录在每次运行时都会创建并包含300M(主要是JAR),并在关闭应用程序时被清除。 这会导致我们出现性能问题(冗余IO操作)。

是否可以在多次运行中使用同一目录? 我们可以在不创建此目录的情况下运行吗?

谢谢

1 个答案:

答案 0 :(得分:1)

首先,这是您正在使用的管理代理的问题。管理代理负责安装,更新和卸载捆绑软件。例如,Karaf有一个基于maven的管理代理,而bnd有其自己的启动器,该启动器具有可执行jar 方法作为管理代理。因此,您首先需要了解管理代理的工作方式。

这样,OSGi确实提供了管理代理可以利用的机制。

  • 通过引用 –通常,通过提供OSGi框架的URL来安装捆绑软件。如果此URL是file: URL并以reference:开头,则框架将通过引用安装软件包 。默认情况下,框架将捆绑软件的jar复制到内部缓存中。 (由于最近bnd的启动器可以创建通过引用安装的可执行JAR。)
  • org.osgi.framework.storage.clean –此系统属性控制是否清除缓存区域。如果将其设置为none,则不会闪烁任何内容。如果设置为onFirstInit,则每次启动框架时都会清除。

如前所述,您需要了解谁是您的管理代理的详细信息,以适当地优化此操作。