這是我觀察到的一個有趣的想法,這讓我困惑了一段時間。Glassfish 3.1.2.2並重新使用Bundle ID
我使用Glassfish 3.1.2.2,我部署了多個OSGi包。
當我想用新版本/修訂版來替換軟件包時,我必須uninstall
,然後install
軟件包。
通常情況下,我認爲Glassfish可以重用不再存在的舊捆綁ID,但它只是繼續。例如,假設Glassfish捆綁包的ID爲100,並且我自己的捆綁包從101開始到200.
當我卸載舊捆綁軟件並安裝新捆綁軟件時,我會假設捆綁ID在範圍101 -200可以重複使用。
相反,我的新的捆綁有自己的ID從201到300
我卸載他們是這樣的:
uninstall <bundle id>
和安裝這樣的:
install file:<path-to-bundle>
如何解決這個問題,以便Glassfish重用舊的軟件包ID?
編輯:
我發現了一個名爲bundle0
在glassfish3\glassfish\domains\domain1\osgi-cache\felix
其中包含有單號,這似乎是有點像DB序列命名bundle.id
文件夾,注意使用的最後一個包ID。
爲了讓我手動更改初始束ID與以下捆綁安裝的,我一定要做到以下幾點,順序如下:
- 卸載通過勾勾控制檯我捆
- 停止Glassfish的
- 刪除我的束
bundle<ID>
文件夾glassfish3\glassfish\domains\domain1\osgi-cache\felix
- 更改數量
bundle.id
文件到一個合理的數值 - 啓動Glassfish的 - 它會增加數量在
bundle.id
文件 - 安裝我的包
正如你可以想像,我不想這個,我想要做一個發佈/升級每次做的新版本。 Glassfish可以自己做到這一點,還是我需要創建一個腳本來爲我做這個?
當你想用更高版本的軟件包更新你的軟件包,以及當你想用相同的版本更新軟件包時發生了什麼? 它會在兩種情況下還是僅在第一種情況下更新包? – Lopina
OSGi框架在更新包時不關心版本。它將用您在更新調用中提供的任何內容替換該包。因此,您可以通過更新升級和降級軟件包。 –
真棒,tyvm :) – Lopina