gpt4 book ai didi

java - 从一个来源安装多个包

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:02 25 4
gpt4 key购买 nike

我使用 Apache Karaf 作为 OSGi 容器。 Karaf 有 url 包装器,可以直接从 maven 存储库安装包

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

一切正常。但我想从给定的来源开始几个 bundle 。如果新 bundle 偶尔会破坏生产服务并且我想回滚,这是有道理的。使用 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

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

最佳答案

您遇到的问题是您无法安装具有相同符号名称和版本的 bundle 的多个副本。

即使可以,在您描述的场景中安装同一个包的两个不同版本也会产生副作用,因为只要安装了一个包,它就可以用来解析包。在您的场景中,这可能不是您想要的,因为您想要使用一个或另一个 bundle ,而不是混合使用。

最后,我建议您只安装所需的 bundle 。如果它有问题,请通过卸载有问题的 bundle 并安装旧版本来回滚。如果您想自动安装和更新(一组) bundle ,请查看 Apache ACE,这是一个用于 OSGi 的软件供应框架,它将帮助您自动执行此类场景(并管理一般的 OSGi 系统)。

关于java - 从一个来源安装多个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com