2014-03-19 89 views
0

這是我觀察到的一個有趣的想法,這讓我困惑了一段時間。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?

編輯:

我發現了一個名爲bundle0glassfish3\glassfish\domains\domain1\osgi-cache\felix其中包含有單號,這似乎是有點像DB序列命名bundle.id文件夾,注意使用的最後一個包ID。

爲了讓我手動更改初始束ID與以下捆綁安裝的,我一定要做到以下幾點,順序如下:

  1. 卸載通過勾勾控制檯我捆
  2. 停止Glassfish的
  3. 刪除我的束bundle<ID>文件夾glassfish3\glassfish\domains\domain1\osgi-cache\felix
  4. 更改數量bundle.id文件到一個合理的數值
  5. 啓動Glassfish的 - 它會增加數量在bundle.id文件
  6. 安裝我的包

正如你可以想像,我不想這個,我想要做一個發佈/升級每次做的新版本。 Glassfish可以自己做到這一點,還是我需要創建一個腳本來爲我做這個?

回答

4

OSGi規範要求捆綁ID不能被重用。注意:您可以更新捆綁軟件而不是卸載/安裝。更新時,捆綁ID將被保留。

+0

當你想用更高版本的軟件包更新你的軟件包,以及當你想用相同的版本更新軟件包時發生了什麼? 它會在兩種情況下還是僅在第一種情況下更新包? – Lopina

+0

OSGi框架在更新包時不關心版本。它將用您在更新調用中提供的任何內容替換該包。因此,您可以通過更新升級和降級軟件包。 –

+0

真棒,tyvm :) – Lopina

2

爲什麼你想保持相同的ID?正如BJ提到你不應該這樣做,所以你可能以錯誤的方式接近另一個問題。

相關問題