编程语言
首页 > 编程语言> > java-从一个来源安装多个捆绑软件

java-从一个来源安装多个捆绑软件

作者:互联网

我正在使用Apache Karaf作为OSGi容器. Karaf具有url包装器,可以直接从Maven存储库安装捆绑软件

> install mvn:com.farpost.billing/background-service/2.2-SNAPSHOT
Bundle ID: 139

一切正常.但是我想从给定的源开始几个捆绑包.如果新的捆绑软件偶尔中断了生产服务,而我想回滚,这是有道理的.使用OSGi,这非常简单

 > list 
 [ 139] [Active     ] [            ] [Started] [   60] Billing background service (2.2-20100811-1232)
 [ 140] [Resolved   ] [            ] [       ] [   60] Billing background service (2.2-20100809-1127)
 > update 140
 > list
 [ 139] [Active     ] [            ] [Started] [   60] Billing background service (2.2-20100811-1232)
 [ 140] [Resolved   ] [            ] [       ] [   60] Billing background service (2.2-20100812-1354)
 > start 140
 > stop 139
 > list
 [ 139] [Resolved   ] [            ] [       ] [   60] Billing background service (2.2-20100811-1232)
 [ 140] [Active     ] [            ] [Started] [   60] Billing background service (2.2-20100812-1354)
 #################
 # suppose we need to rollback here
 #################
 > start 139
 > stop 140

问题是我无法从一个来源创建多个捆绑包:

> install mvn:com.farpost.billing/background-service/2.2-SNAPSHOT
Bundle ID: 139
> install mvn:com.farpost.billing/background-service/2.2-SNAPSHOT
Bundle ID: 139

第二次安装调用不执行任何操作,但返回已存在的包ID.所以我的问题是,有没有办法从一个源URL创建多个捆绑软件?

解决方法:

您遇到了一个问题,即您不能安装多个具有相同符号名称和版本的捆绑软件副本.

即使可以,在您描述的场景中安装同一捆绑包的两个不同版本也会带来副作用,因为只要安装了捆绑包,它就可以用来解析其中的软件包.在您的方案中,这可能不是您想要的,因为您想使用一个或另一个捆绑包,而不是混合使用.

最后,我建议您仅安装所需的软件包.如果存在问题,请通过卸载有问题的捆绑包并安装旧版本来进行回滚.如果您想自动化(一组)捆绑软件的安装和更新,请查看Apache ACE,这是OSGi的软件供应框架,可帮助您自动化此类情况(并通常管理OSGi系统).

标签:apache-karaf,osgi,java
来源: https://codeday.me/bug/20191023/1916438.html