5

我开始使用 ServiceMix 和 Camel,我已经浏览了很多示例。

似乎OSGi的示例可以通过热部署或控制台部署在ServiceMix中,但我不知道如何部署不是OSGI的项目。可以做到吗?

例如,我正在查看 Camel 2.10.0 中名为 camel-example-cxf-proxy 的示例项目。我做了一些改动,现在我想将它加载到 ServiceMix 中。如果我复制/粘贴到部署目录,它会被加载,但是当我尝试通过 osgi:start id 运行它时它会失败。

但是,如果我从 IDE 独立运行它,它运行得很好,我可以通过 SoapUI 发送和接收请求。

完成示例后,我想在 Eclipse 中创建自己的项目并在 IDE 和 ServiceMix 中进行测试。我还不太了解 OSGi 的优势。所以我并不太被迫在我的项目中使用 OSGi。

我的主要问题是:我可以在 servicemix 中部署一个非 OSGi 非 JBI 兼容的项目吗?像camel-example-cxf-proxy这样的东西。如果是,我该怎么做?如果不是,我如何 OSGi-fy camel-example-cxf-proxy?

谢谢 :)

4

3 回答 3

5

使用 Apache Karaf 作为内核的 Apache ServiceMix 支持可插拔部署单元。虽然 OSGi 是主要单元。

您可以部署 JBI 工件(例如,JBI 被用作 Apache ServiceMix 3.x 的部署单元)。因此,我们提供了它作为在 SMX 4.x 中运行 JBI 的迁移路径。

也可以部署一个普通的 WAR 文件。例如,您可以将一个 .war 文件放到部署目录中。如果你从 shell 部署,你需要在部署器前面加上 war,这样它就知道使用 war 部署器。

这里有一些关于各种可插拔部署器的文档 http://fusesource.com/docs/esbent/7.0/esb_deploy_osgi/UrlHandlers.html

例如,要使用 Maven 安装 Apache Wicket WAR 示例,您可以从 shell 执行:

osgi:install war:mvn:org.apache.wicket/wicket-examples/1.4.7/war?Web-ContextPath=wicket

关于部署器的 Apache 文档主要记录在 Apache Karaf http://karaf.apache.org/manual/2.2.9/users-guide/deployer.html

现在部署 OSGi 应用程序可能有点麻烦。这就是 FuseSource 创建 FAB 以使其更容易的原因。我在博客上写了一点,其中引用了视频和更多材料:http ://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html

使用 FAB,您可以开箱即用地部署常规 Maven 项目,而没有任何 OSGi 痛苦。

于 2012-09-08T08:48:50.923 回答
3

如果您的项目是 Maven 项目,您可以尝试:

mvn install

然后启动您的 servicemix,并在 servicemix 命令行中:

install mvn:groupId/artifactId/version

这将提示捆绑 ID。然后,只需启动捆绑包:

start <bundle_id>

您可以使用命令“list”检查捆绑包的状态

于 2012-09-07T14:50:05.227 回答
1

该项目必须是要安装在 servicemix / karaf 中的捆绑包。因此,使骆驼项目在 OSGi 中运行的步骤如下。

  1. 使用 pom 中的 maven bundle 插件,并在必要时将其配置为导入/导出必要的包。

  2. 确保以 OSGi 可以启动的方式定义骆驼上下文。这要么在包的激活器中,要么在正确位置的弹簧配置中,或者在正确位置的蓝图配置中。

有关详细信息,请参阅我的两个 karaf 教程:

CXF:http ://www.liquid-reality.de/x/EoBk

骆驼:http ://www.liquid-reality.de/x/G4Bk

于 2012-09-08T12:57:33.557 回答