0

我正在尝试在我的 features.xml 中使用 fuse 应用程序捆绑工具,如http://fuse.fusesource.org/bundle/faq.html底部所述,并在启动时安装该功能,但是我相信我是启动顺序有问题。

我相信这是我在 org.apache.karaf.features.cfg 文件中包含的 Fuse Application Bundles 捆绑包的结构捆绑包功能:

#
# Comma separated list of features to install at startup
#
featuresBoot=fabric-bundle,(some other features),myfeature

我的功能定义类似于以下内容:

<feature name="myfeature" version="${project.version}">
    <bundle>fab:mvn:com.company/mybundle/${project.version}</bundle>
</feature>

但是在启动时,我在日志中注意到了这一点:

16:31:20,785 | DEBUG | t-60024-thread-1 | FeaturesServiceImpl              | 22 - org.apache.karaf.features.core - 2.3.0.redhat-60024 | Installing feature myfeature 2.0.0-SNAPSHOT
16:31:20,786 | DEBUG | t-60024-thread-1 | FeaturesServiceImpl              | 22 - org.apache.karaf.features.core - 2.3.0.redhat-60024 | Checking fab:mvn:com.company/mybundle/2.0.0-SNAPSHOT
16:31:20,789 | WARN  | t-60024-thread-1 | FeaturesServiceImpl              | 22 - org.apache.karaf.features.core - 2.3.0.redhat-60024 | Error when installing feature myfeature: java.net.MalformedURLException: Unknown protocol: fab

我注意到 Fuse Application Bundles 捆绑包(fab-osgi)实际上是在 3 秒后启动的:

16:31:23,436 | DEBUG | lixDispatchQueue | fab-osgi                         | 61 - org.fusesource.fabric.fab.fab-osgi - 7.2.0.redhat-024 | BundleEvent STARTED - org.fusesource.fabric.fab.fab-osgi

因此,现在一旦在 shell 中启动服务器,我就可以运行

features:install myfeature

并且该功能已成功安装。

因此,我认为在尝试安装和启动我的功能之前,我需要确保 Fuse Application Bundles 捆绑包已安装并在启动时启动。我怎样才能做到这一点?

干杯,

汤姆

4

1 回答 1

0

在我使用的 Fuse 版本 - 6.0 (Redhat 60042) - 结构包及其依赖项没有在功能包之前启动,因此功能包不了解 fab 协议。通过将以下内容添加到您的 startup.properties 中,确保在功能包完成之前启动结构包:

org/fusesource/fabric/fab/fab-osgi/7.2.0.redhat-024/fab-osgi-7.2.0.redhat-024.jar=10
org/fusesource/fabric/common-util/7.2.0.redhat-024/common-util-7.2.0.redhat-024.jar=10
org/ops4j/base/ops4j-base-net/1.2.2/ops4j-base-net-1.2.2.jar=10
org/ops4j/base/ops4j-base-lang/1.2.2/ops4j-base-lang-1.2.2.jar=10
org/ops4j/base/ops4j-base-util-property/1.2.2/ops4j-base-util-property-1.2.2.jar=10
org/ops4j/pax/swissbox/pax-swissbox-optional-jcl/1.3.1/pax-swissbox-optional-jcl-1.3.1.jar=10
org/ops4j/base/ops4j-base-monitors/1.2.2/ops4j-base-monitors-1.2.2.jar=10
org/ops4j/pax/swissbox/pax-swissbox-property/1.2.0/pax-swissbox-property-1.2.0.jar=10

我不确定 10 是一个合适的起始级别,但它似乎对我有用,没有问题。

于 2013-08-21T08:17:47.170 回答