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