0

我对 Apache Karaf 很陌生。我有一个 Java 程序打包在一个jar文件中,比如说A-1.0.jar. 我还有一个 Karaf 实例,我在文件夹A.jar下部署了该实例。deploy现在我正在jar使用:

java -jar A.jar

它在屏幕上打印几个数字。虽然它正在运行,但我部署A-2.0.jar在同一路径中(deployKaraf 主页下的文件夹)。从 Karaf 日志中,我可以看到 Karaf 已经安装了这两个包。

我的问题是,在运行时A-1.0.jar,Karaf 是否应该A-2.0.jar从现在开始执行(因为 Karaf 得到了这个新版本)?或者,我错过了什么?如何测试 Karaf 的热部署策略?

提前致谢,

阿布舍克

4

1 回答 1

0

终于有点明白了……

任何自定义jar执行都与 Karaf 无关,它甚至不知道执行(因为它们是两个独立的 JVM 实例)。

我们需要BundleActivatorjar其中编写一个调用实际代码的代码,然后将其部署在 Karaf 中(或放在deploy文件夹下)并启动它。Karaf 会自动调用BundleActivator,因此我们的自定义代码会被执行。

Ajar始终由Bundle-SymbolicNamein MANIFESTfile 唯一标识(jar文件名无关紧要)。也Bundle-Version表示实际版本。如果A-1.0.jarA-2.0.jar具有相同的名称,则 Karaf 稍后假定jar它是它正在执行的最新版本(A-1.0.jar)。所以一旦找到,它会A-2.0.jarA-1.0.jar' 执行完成后自动执行。

于 2014-03-20T04:01:28.110 回答