2016-09-19 67 views
1

我有一個關於卡拉夫和功能加載的問題。我有一個包含我的應用程序的所有捆綁包的kar文件。它在PROD環境中發佈。它是一個基於4.0.4版本的離線Karaf自定義構建 - 而KAR文件位於部署文件夾中。我想製作一個覆蓋一個或多個相同捆綁的補丁。由於某些政策,無法發佈新版本的卡爾。我的問題是:Karaf包加載優先級

  1. 引用特定版本的bundle的功能文件。如果我將它們放入/部署到相同版本,JAR將被使用,還是不確定?
  2. 當我將更新的版本(次版本更改)綁定到/ deploy時,它是使用還是特定功能定義的版本?或者,也許行爲是非確定性的?
  3. 當1或2沒有確定性的解決方案時,還有其他嗎?

回答

2

1a。要素文件中的引用包將從可用存儲庫(通常是maven存儲庫)加載。部署/文件夾不是存儲庫。部署/文件夾中的任何內容都會立即加載。

1b。如果已經加載了具有匹配符號名稱+版本的包,則Karaf將不會加載第二個版本,如果一個功能文件指定的話。請考慮加載哪些功能和軟件包的功能定義爲「如果它尚未存在,請加載」

  1. 如果是第二個文件,則會將其部署爲第二個文件束。可以說是一個包的唯一「鑰匙」是基於MANIFEST.MF中的值的符號名稱+版本。

  2. 不適用。這是確定性的。

+0

1a - 好的。但是當版本相同時,karaf重新啓動後將部署哪個版本?或在卡拉OK乾淨後? 1b - 謝謝,這很有道理。 2.好的。因此,當服務不願意進行聲明式服務時,它不會改變 - 所以它不是一個解決方案。 3.好的。謝謝。 –