2014-03-19 63 views
0

我對Apache Karaf很新。我有一個打包在jar文件中的Java程序,比如A-1.0.jar。我還有一個Karaf實例,我在其中部署了A.jar文件夾下的deploy文件夾。現在,我使用運行此jarApache Karaf用法

java -jar A.jar 

它打印屏幕上的幾個數字。在運行時,我在同一路徑(Karaf主頁下的deploy文件夾)中部署了A-2.0.jar。從卡拉夫的日誌中,我可以看到卡拉夫已經安裝了兩個捆綁包。

我的問題是,在運行A-1.0.jar時,Karaf應該執行A-2.0.jar(因爲Karaf獲得了這個新版本),現在呢?或者,我錯過了什麼?我如何測試Karaf的熱門部署策略?

由於提前,

阿布舍克

回答

0

最後得到了一定的瞭解...

任何自定義jar執行與Karaf沒有關係,它甚至不知道執行(因爲它們是兩個單獨的JVM實例)。

我們需要在調用實際代碼的jar中編寫一個BundleActivator,然後將其部署到Karaf(或放在deploy文件夾下)並啓動它。 Karaf自動調用BundleActivator,因此我們的自定義代碼被執行。

A jar始終由Bundle-SymbolicNameMANIFEST文件(jar文件名無關緊要)中唯一標識。另外Bundle-Version表示實際版本。如果A-1.0.jarA-2.0.jar具有相同的名稱,則Karaf稍後將假定它正在執行的相同jar的最新版本(A-1.0.jar)。所以一旦發現,一旦A-1.0.jar的執行完成,它會自動執行A-2.0.jar