功能依赖关系在Apache Karaf中随机失败

问题描述

我正在编写一个具有其他功能依赖性的应用程序。

功能A与功能B有依赖关系,因此我在其中声明了它

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
        <repository>mvn:com.eclipsesource.jaxrs/features/4.3/xml/features</repository>
<feature name="FeatureA" version="1.0.0" install="auto">
        <feature>FeatureB</feature>
</feature>

在大多数情况下,两个KAR都已正确部署。偶尔我会遇到一个问题,即功能B仅在KaraF控制台的list命令中安装并列出。但是功能A在(部署文件夹中)。

我遍历了KaraF源代码,并发现了 如果功能A首先出现,它将在 DelayedDeployerThread 中等待2毫秒。安装功能B后,它将变量cancel设置为true,这样就退出了循环,并且功能A继续进行安装。

2020-09-29T11:46:36.122+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   48 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Installing KAR file /opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureA.kar
2020-09-29T11:46:36.123+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl   93 | 50 - org.apache.karaf.kar.core - 4.1.4 | Installing KAR test from file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureA.kar
2020-09-29T11:46:36.124+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar   96 | 50 - org.apache.karaf.kar.core - 4.1.4 | Uncompress the KAR file file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureA.kar into directory /opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/FeatureA
2020-09-29T11:46:36.124+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory test
2020-09-29T11:46:37.203+0200 | INFO  | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  267 | 50 - org.apache.karaf.kar.core - 4.1.4 | Added feature repository 'file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/test/featureA/features_A.xml'
2020-09-29T11:46:37.209+0200 | DEBUG | .4/instances/test/deploy | o.a.k.f.i.s.Blacklist            | tures.internal.service.Blacklist  139 | 10 - org.apache.karaf.features.core - 4.1.4 | Unable to load blacklist bundles list
2020-09-29T11:46:37.210+0200 | WARN  | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  121 | 50 - org.apache.karaf.kar.core - 4.1.4 | Feature dependency FeatureB/0.0.0 is not available. Kar deployment postponed to see if it is about to be deployed
2020-09-29T11:46:37.212+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   48 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Installing KAR file /opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureB.kar
2020-09-29T11:46:37.213+0200 | DEBUG | Delayed kar deployment           | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  287 | 50 - org.apache.karaf.kar.core - 4.1.4 | noAutoRefreshBundles is false
2020-09-29T11:46:37.212+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl   93 | 50 - org.apache.karaf.kar.core - 4.1.4 | Installing KAR FeatureB from file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureB.kar
2020-09-29T11:46:37.213+0200 | DEBUG | Delayed kar deployment           | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  291 | 50 - org.apache.karaf.kar.core - 4.1.4 | noAutoStartBundles is false (default false)
2020-09-29T11:46:37.215+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar   96 | 50 - org.apache.karaf.kar.core - 4.1.4 | Uncompress the KAR file file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureB.kar into directory /opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/FeatureB
2020-09-29T11:46:37.216+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory FeatureB
2020-09-29T11:46:37.216+0200 | INFO  | Delayed kar deployment           | o.a.k.f.i.s.FeaturesServiceImpl  | rnal.service.FeaturesServiceImpl 1286 | 10 - org.apache.karaf.features.core - 4.1.4 | Adding features: FeatureA/[1.0.0,1.0.0]
2020-09-29T11:46:37.217+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory FeatureB
2020-09-29T11:46:37.217+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory bundles
2020-09-29T11:46:37.219+0200 | DEBUG | features-1-thread-1              | o.a.k.f.i.s.Overrides            | tures.internal.service.Overrides  130 | 10 - org.apache.karaf.features.core - 4.1.4 | Unable to load overrides bundles list

在此SimpleDownloadTask之后,尝试安装功能A中的所有捆绑软件。 最终陷入错误

2020-09-29T11:46:37.901+0200 | WARN  | Delayed kar deployment           | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  297 | 50 - org.apache.karaf.kar.core - 4.1.4 | Unable to install Kar feature featureA/1.0.0

预期的行为是它应该等待功能B完成并开始安装。同样的事情发生 成功的案例中

2020-09-28T19:18:07.846+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   75 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Found a .kar file to deploy.
2020-09-28T19:18:07.846+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   75 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Found a .kar file to deploy.
2020-09-28T19:18:07.846+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   48 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Installing KAR file /opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/featureA.kar
2020-09-28T19:18:07.847+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl   93 | 50 - org.apache.karaf.kar.core - 4.1.4 | Installing KAR test from file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureA.kar
2020-09-28T19:18:07.848+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar   96 | 50 - org.apache.karaf.kar.core - 4.1.4 | Uncompress the KAR file file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/FeatureA.kar into directory /opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/test
2020-09-28T19:18:07.848+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory test
2020-09-28T19:18:08.113+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory bundles
2020-09-28T19:18:08.253+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory featureA
2020-09-28T19:18:08.926+0200 | INFO  | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  267 | 50 - org.apache.karaf.kar.core - 4.1.4 | Added feature repository 'file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/test/featureA/featuresA.xml'
2020-09-28T19:18:08.934+0200 | WARN  | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  121 | 50 - org.apache.karaf.kar.core - 4.1.4 | Feature dependency featureB/0.0.0 is not available. Kar deployment postponed to see if it is about to be deployed
2020-09-28T19:18:08.936+0200 | INFO  | .4/instances/test/deploy | o.a.k.d.k.KarartifactInstaller   | eployer.kar.KarartifactInstaller   48 | 39 - org.apache.karaf.deployer.kar - 4.1.4 | Installing KAR file /opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/featureB.kar
2020-09-28T19:18:08.936+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl   93 | 50 - org.apache.karaf.kar.core - 4.1.4 | Installing KAR featureB from file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/featureB.kar
2020-09-28T19:18:08.937+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar   96 | 50 - org.apache.karaf.kar.core - 4.1.4 | Uncompress the KAR file file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/deploy/featureB.kar into directory /opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/featureB
2020-09-28T19:18:08.937+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory featureB
2020-09-28T19:18:08.938+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory featureB
2020-09-28T19:18:08.938+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | rg.apache.karaf.kar.internal.Kar  157 | 50 - org.apache.karaf.kar.core - 4.1.4 | Creating directory bundles
2020-09-28T19:18:10.866+0200 | DEBUG | .4/instances/test/deploy | o.a.k.f.i.s.Blacklist            | tures.internal.service.Blacklist  139 | 10 - org.apache.karaf.features.core - 4.1.4 | Unable to load blacklist bundles list
2020-09-28T19:18:10.869+0200 | INFO  | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  267 | 50 - org.apache.karaf.kar.core - 4.1.4 | Added feature repository 'file:/opt/osgi/apache-custom-karaf-4.1.4/instances/test/data/kar/featureB/featureB/featuresB.xml'
2020-09-28T19:18:10.871+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  287 | 50 - org.apache.karaf.kar.core - 4.1.4 | noAutoRefreshBundles is false
2020-09-28T19:18:10.871+0200 | DEBUG | .4/instances/test/deploy | o.a.k.k.i.KarServiceImpl         | araf.kar.internal.KarServiceImpl  291 | 50 - org.apache.karaf.kar.core - 4.1.4 | noAutoStartBundles is false (default false)

不确定为什么失败不会在循环中等待并继续进行功能A的安装,时间差也为1毫秒。 我们正在使用maven插件生成功能文件,并且有一个属性先决条件”的文档,该文档要求功能B在功能A之前完成(启动/激活)。 任何帮助将不胜感激。

karServiceimpl.java的

https://github.com/chirino/karaf-1/blame/master/kar/src/main/java/org/apache/karaf/kar/internal/KarServiceImpl.java

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...