Apache Karaf 与 Servicemix

Posted

技术标签:

【中文标题】Apache Karaf 与 Servicemix【英文标题】:Apache Karaf vs. Servicemix 【发布时间】:2011-10-19 07:16:51 【问题描述】:

有人用 Karaf 代替 Servicemix 吗?如果是这样,您是如何做出这个决定的?我知道 Servicemix 在 Karaf 周围添加了一层功能,只是好奇 Karaf 是否被单独使用以及为什么......

【问题讨论】:

【参考方案1】:

我们在许多应用程序中都使用了 Karaf。我们已经在使用 Camel(JMS 和 Esper)在几个不同的平台(一个 JBoss 4.2 实例、一个 Tomcat 和几个 Felix 实例)之间进行集成,并且由于它运行良好,因此也没有什么理由迁移它(这可能会导致考虑 ServiceMix)。

我们有一些 Felix 节点的唯一原因是它们的使用受限(在客户端桌面上),很少需要/得到更新,我希望这些节点的占用空间最小。对于服务器端的任何 OSGi,我们都在使用 Karaf。

Karaf 提供了生产环境所需的所有功能(请参阅apache-karaf tag's info)。我们针对标准最小框架(使用 pax-exam)进行开发和测试,但部署到 Karaf。

如果您不需要 ESB、JCA、BPEL 等,但想要一个可靠的、可调的 OSGi 容器,那么 Karaf 本身就足够了。 (如果您发现自己需要 ServiceMix 功能的有限子集,您可以随时将它们安装在 Karaf 实例中)。

您也可以将 customise the Karaf distribution 作为 maven 构建的一部分 - 我个人喜欢将容器作为应用程序构建的一部分,因为我可以在最短的时间内从命令行签出、构建和运行整个设置。

最近有一个名为 Cellar 的 Karaf 集群子项目使用 HazelCast,我不确定这是否也适用于 ServiceMix。

【讨论】:

【参考方案2】:

Karaf 的生命始于 ServiceMix 核心。目前,ServiceMix 实际上是一组部署到 Karaf 容器中的捆绑包。 ServiceMix 有许多非常方便的捆绑包,它们做了很多 karaf 没有做的很酷的事情。也就是说,使用 ServiceMix 的两个主要原因是: 1) 一个 ESB, 2) NMR(允许您在包和 Karaf 实例之间进行社区的功能)。

总而言之,ServiceMix 小组目前正在计划第 5 版,它将删除 ESB 和 NMR 功能,并将专注于成为 Camel 的管理容器。在 ESB 中,在创建可以使用 BPL(业务流程语言)描述的组件方面付出了巨大的努力。然而,编写 ServiceMix 的人开始关注 EIP(企业集成模式)的实现,它在很大程度上与 BPL 做同样的事情,但以更标准化和更可接受的方式来做。这项工作是在 Camel 项目下完成的。

所以,简而言之。如果您使用的是 ServiceMix 4+,那么您也在使用 Karaf。如果您想要一个更健壮的集成环境,那么今天选择的环境(至少在 Apache/Felix 世界中)是 Karaf、Camel 和一些来自 Servicemix 的捆绑包。

【讨论】:

Karaf 是否带有用于 Web 服务的 SOAP 引擎?我知道我可以添加 CFX 来获得它。我想知道 ServiceMix 是否附带。 CXF 3.1.9 包含在 servicemix 7.0.1 中【参考方案3】:

这是我做的一个小对比图。从最简单的情况(底部的Apache Felix提供的带有OSGi功能的JVM),到更完整/可管理的OSGi功能(中间的Apache Karaf),到足够实现完整 ESB 实例的功能(Apache ServiceMix 在顶部)(请注意,“ESB”不是产品,而是一组端点、路由器、数据库、ETL 功能以及未在特定任务特定的方式)。

【讨论】:

可能是以前Karaf中的一些功能已经迁移到Felix了,这方面的网络描述很难理解。 ...未来会带来什么? To ServiceMix or Not to ServiceMix "Blueprint" 是 Apache Aries Blueprint,它是 OSGi 的依赖注入框架,由 OSGi 联盟在 OSGi Compendium R4.2 中标准化。(显然是基于关于Spring Dynamic Modules 的实现。但是,OSGi 现在在 Springsource 似乎已经死了:搜索结果中的Not a single Guide。【参考方案4】:

Karaf 与 CXF 一起提供。

ServiceMix 的纯提取内核。但是,您可以在 Karaf 上安装 CXF,如下所示。

karaf:root()> 特征:repo:add cxf

添加功能 URL 后,我们可以使用以下命令查看“提供的”功能。

karaf:root()> 功能:repo:功能:列表 | grep cxf

要安装 cxf,请执行以下命令

karaf:root()> 功能:安装 cxf

【讨论】:

以上是关于Apache Karaf 与 Servicemix的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过karaf中的默认aries jndi查找

OSGi 容器 - Equinox 与 Apache Karaf 中的 Apache Felix

NoClassDefFoundError: OsgiDefaultCamelContext 使用 Apache ServiceMix

无法安装Apache servicemix

Apache Karaf配置远程调试

无法在 Apache ServiceMix 中启动 OSGI 包