在 fuse fabric 中部署 camel 项目

Deploy camel project in fuse fabric

以下是我想知道的在 fuse fabric 环境中部署 camel 项目的事情。 我创建了捆绑罐。这些 bundle jar 在非结构环境中运行良好。即当我将这些 jars 移动到 jboss-fuse 上的部署目录时,它工作得很好。 当相同的罐子移动到子容器时,它不起作用。我为结构环境设置的内容如下:

已创建 Fabric 容器:

fabric:create --new-user fadmin --new-user-password maskerkey --generate-zookeeper-password --resolver localip

子容器:

fabric:container-create-child root node 2

我应该如何将相同的 bundle jar 部署到子容器?我在部署 bundle jar 时看到以下异常:

org.osgi.framework.BundleException: Unresolved constraint in bundle BUNDLE_NAME [139]: Unable to resolve 139.0: missing requirement [139.0] osgi.wiring.package; (osgi.wiring.package=org.apache.activemq.camel.component)

当你有 fabric 环境时,你不应该使用 deploy/ 目录。它更适合用于原型设计。

当您使用以下方法创建子容器时:

fabric:container-create-child root node 2

您现在有两个名为 node1node2

的容器

OSGi 中的 bundle 只是一个 enhanced JAR。

A (Karaf) featurebundles(可能还有配置)的集合,因此您可以更轻松地安装多个 bundle。

A (Fabric) profiledeclaration bundle、功能、配置和资源(大致),因此您可以安装多个(karaf) 功能更容易。

您的错误消息表示尚未安装可以满足您的 捆绑包要求的捆绑包。更准确地说,您缺少导出 org.apache.activemq.camel.component 包的包。

如果您查看 Fuse 可用的配置文件和功能,您会看到:

JBossFuse:karaf@root> features:info activemq-camel
Description of activemq-camel 5.11.0.redhat-vvv feature
----------------------------------------------------------------
Feature has no configuration
Feature has no configuration files
Feature depends on:
  activemq-client 5.11.0.redhat-vvv
  camel-spring [2.17,3)
  camel-jms [2.17,3)
  camel [2.17,3)
Feature contains followed bundles:
 mvn:org.apache.activemq/activemq-camel/5.11.0.redhat-vvv start-level=50
Feature has no conditionals.

(其中 vvv 是 Fuse 的构建)。

现在您必须创建您的 个人资料:

profile-create myprofile

为其添加activemq-camel功能:

profile-edit --feature activemq-camel myprofile

将您的捆绑包添加到其中:

profile-edit --bundle mvn:your-groupId/your-artifactId/your-version

并将此配置文件分配给一个容器(containers)

container-add-profile node1 myprofile