java - OSGI缓存目录

标签 java osgi

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

有没有办法在多次运行中使用同一目录? 我们可以在不创建这个目录的情况下运行吗?

谢谢

最佳答案

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

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

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

如前所述,您需要了解谁是您的管理代理的详细信息才能正确优化此操作。

关于java - OSGI缓存目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52615105/

相关文章:

java - 方法重载尝试给出名称冲突错误。不使用泛型

java - Quartz为已经存在的作业添加触发器

event-handling - 何时使用 OSGi EventAdmin,何时不使用?

java - 如何在 OSGi 中实现一个包,该包具有一个将值放入 ThreadContext 的类,以使这些值对其他包可见

java - 以编程方式连接 LDAP 并在 AEM 中验证凭据

spring - 无法将 osgi 服务 bean 公开为类而不是接口(interface)

java - 为什么 Map.of 不允许空键和值?

java - 隐藏工具栏中的元素,在单个 Activity 、各种 fragment 上实现

java - Jetty 8 中静态页面的基本 HTTP 身份验证

java - AEM 6.5 PKIX 路径构建失败 : sun. security.provider.certpath.SunCertPathBuilderException