apache - 要使用 ServiceMix,我的项目必须是 OSGi 包吗?

标签 apache apache-camel osgi apache-servicemix

我开始使用 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 示例-cxf-代理?

谢谢 :)

最佳答案

Apache ServiceMix 使用 Apache Karaf 作为其内核,支持可插拔部署单元。虽然 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 以使其更容易的原因。我在博客上写了一点,其中引用了视频和更多 Material :http://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html

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

关于apache - 要使用 ServiceMix,我的项目必须是 OSGi 包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320202/

相关文章:

java - Class.getName() 的静态调用

apache - magento : some htaccess redirection doesn't work

java - Camel 路由 - 用 HTTP 负载替换消息正文中的 DTO

java - Apache Camel 传递参数

java - 使用 Glassfish 和 CDI 获取服务属性或其他包

java - Eclipse e4 应用程序 - 包含在插件中时未找到 ContextFactory

WordPress 尾部斜线

apache - 启动后出现错误 : PID file/run/httpd/httpd. pid 不可读(还?)。 ( Apache )

c++ - C++ 服务的 mod_gsoap 错误

java - 如何从 log4j 的日志文件中获取 Apache Camel 消息历史记录?