Java Glassfish 3.1.2.2和重复使用捆绑ID
我观察到了一个有趣的想法,这让我困惑了一段时间 我正在使用Glassfish 3.1.2.2,我在其上部署了多个OSGi捆绑包 当我想用新版本/修订版替换捆绑包时,我必须Java Glassfish 3.1.2.2和重复使用捆绑ID,java,glassfish,osgi,bundle,Java,Glassfish,Osgi,Bundle,我观察到了一个有趣的想法,这让我困惑了一段时间 我正在使用Glassfish 3.1.2.2,我在其上部署了多个OSGi捆绑包 当我想用新版本/修订版替换捆绑包时,我必须卸载,然后安装捆绑包 通常,我假设Glassfish可以重用不再存在的旧bundle ID,但它仍在继续。例如,假设Glassfish捆绑包的ID为100,我自己的捆绑包的ID从101到200 当我卸载旧的bundle并安装新的bundle时,我假设101-200范围内的bundle ID是可重用的 相反,我的新捆绑包的ID从2
卸载
,然后安装
捆绑包
通常,我假设Glassfish可以重用不再存在的旧bundle ID,但它仍在继续。例如,假设Glassfish捆绑包的ID为100,我自己的捆绑包的ID从101到200
当我卸载旧的bundle并安装新的bundle时,我假设101-200范围内的bundle ID是可重用的
相反,我的新捆绑包的ID从201到300
我将按如下方式卸载它们:
uninstall <bundle id>
install file:<path-to-bundle>
卸载
然后像这样安装:
uninstall <bundle id>
install file:<path-to-bundle>
安装文件:
如何解决这个问题,使Glassfish重用旧的bundle id
编辑:
我在glassfish3\glassfish\domains\domain1\osgi cache\felix
中找到了一个名为bundle 0
的文件夹,其中包含一个名为bundle.id
的文件,该文件带有一个数字,似乎类似于DB序列,并记录了最后使用的bundle id
为了使我能够使用以下捆绑包安装手动更改起始捆绑包id,我必须按以下顺序执行以下操作:
bundle
glassfish3\glassfish\domains\domain1\osgi cache\felix中我的bundle文件夹bundle.id
文件中的数字更改为合理的数字bundle.id
文件中的数字Glassfish可以自己完成这项工作吗,或者我需要创建某种脚本来为我完成这项工作吗?OSGi规范要求不能重复使用bundle ID。注意:您可以就地更新捆绑包,而不是卸载/安装。更新时,将保留捆绑包id。OSGi规范要求不重用捆绑包id。注意:您可以就地更新捆绑包,而不是卸载/安装。更新时,将保留捆绑包id。为什么要保留相同的id?正如BJ提到的,您不应该这样做,因此您可能以错误的方式处理另一个问题。为什么要保留相同的ID?正如BJ提到的,您不应该这样做,因此您可能以错误的方式处理了另一个问题。当您想用更高版本更新捆绑包时会发生什么,当您想用相同版本更新捆绑包时会发生什么?它会在两种情况下更新捆绑包,还是只在第一种情况下更新捆绑包?OSGi框架在更新捆绑包时不关心版本。它将用您在更新调用中提供的任何内容替换捆绑包。因此,您可以通过更新升级和降级捆绑包。当您想用更高版本的捆绑包更新捆绑包时会发生什么情况,当您想用相同版本的捆绑包更新捆绑包时会发生什么情况?它会在两种情况下更新捆绑包,还是只在第一种情况下更新捆绑包?OSGi框架在更新捆绑包时不关心版本。它将用您在更新调用中提供的任何内容替换捆绑包。因此,您可以通过更新升级和降级捆绑包。