gpt4 book ai didi

java - Glassfish 3.1.2.2 和重用 Bundle ID

转载 作者:行者123 更新时间:2023-12-01 08:04:58 25 4
gpt4 key购买 nike

这是我观察到的一个有趣的想法,它让我困惑了一段时间。

我正在使用 Glassfish 3.1.2.2,我在其上部署了多个 OSGi 包。

当我想用新版本/修订版替换 bundle 时,我必须 uninstall然后install bundle 。

通常情况下,我假设 Glassfish 可以重用不再存在的旧包 ID,但它只是继续。例如,假设 Glassfish bundle 的 ID 为 100,而我自己的 bundle 从 101 开始到 200。

当我卸载旧 bundle 并安装新 bundle 时,我假设 101-200 范围内的 bundle ID 是可重用的。

相反,我的新 bundle 的 ID 从 201 到 300。

我像这样卸载它们:

uninstall <bundle id>

并像这样安装:

install file:<path-to-bundle>

如何解决此问题以便 Glassfish 重用旧的包 ID?

编辑:

我找到了一个名为 bundle0 的文件夹在glassfish3\glassfish\domains\domain1\osgi-cache\felix其中包含一个名为 bundle.id 的文件带有一个数字,这似乎类似于数据库序列,注明最后使用的 bundle ID。

为了让我能够手动更改以下 bundle 安装的起始 bundle ID,我必须按以下顺序执行以下操作:

  1. 通过 GoGo 控制台卸载我的 bundle
  2. 阻止 Glassfish
  3. 删除bundle<ID>我的 bundle 的文件夹位于 glassfish3\glassfish\domains\domain1\osgi-cache\felix
  4. 更改 bundle.id 中的号码归档到合理的数量
  5. 启动 Glassfish - 它将增加 bundle.id 中的数字文件
  6. 安装我的软件包的新版本

正如你所想象的,我不想每次想要发布/升级时都这样做。Glassfish 可以自己完成此操作,还是我需要创建某种脚本来为我完成此操作?

最佳答案

OSGi 规范要求 bundle ID 不能重复使用。注意:您可以就地更新 bundle ,而不是卸载/安装。当您更新时, bundle ID 会被保留。

关于java - Glassfish 3.1.2.2 和重用 Bundle ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com