2014-03-19 47 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