我有一个Java OSGI应用程序,似乎OSGI缓存目录在每次运行时都会创建并包含300M(主要是JAR),并在关闭应用程序时被清除。 这会导致我们出现性能问题(冗余IO操作)。
是否可以在多次运行中使用同一目录? 我们可以在不创建此目录的情况下运行吗?
谢谢
答案 0 :(得分:1)
首先,这是您正在使用的管理代理的问题。管理代理负责安装,更新和卸载捆绑软件。例如,Karaf有一个基于maven的管理代理,而bnd有其自己的启动器,该启动器具有可执行jar 方法作为管理代理。因此,您首先需要了解管理代理的工作方式。
这样,OSGi确实提供了管理代理可以利用的机制。
file:
URL并以reference:
开头,则框架将通过引用安装软件包 。默认情况下,框架将捆绑软件的jar复制到内部缓存中。 (由于最近bnd的启动器可以创建通过引用安装的可执行JAR。)org.osgi.framework.storage.clean
–此系统属性控制是否清除缓存区域。如果将其设置为none
,则不会闪烁任何内容。如果设置为onFirstInit
,则每次启动框架时都会清除。如前所述,您需要了解谁是您的管理代理的详细信息,以适当地优化此操作。