Apache Karaf与Servicemix的比较

23

有人使用Karaf而不是Servicemix吗?如果是的话,你是如何做出这个决定的呢?我知道Servicemix在Karaf周围添加了一层功能,只是好奇Karaf是否被单独使用以及原因是什么...

4个回答

28

我们在许多应用程序中使用Karaf。我们已经在几个不同平台之间使用Camel(JMS和Esper)进行集成,包括JBoss 4.2实例、Tomcat和几个Felix实例。由于这已经很好地运作,所以没有太多理由去迁移这些内容到其他软件(这将导致考虑ServiceMix)。

我们之所以有一些Felix节点,是因为它们的使用受限(在客户端桌面上),很少需要/更新,并且我想要这些节点具有最小的占用空间。对于服务器端的任何OSGi,我们都使用Karaf。

Karaf提供了生产环境所需的所有功能(请参见apache-karaf标签的信息)。我们使用标准的最小框架(使用Pax-exam)进行开发和测试,但是部署到Karaf。

如果您不需要ESB、JCA、BPEL等,但需要一个稳定、可调整的OSGi容器,则单独使用Karaf就足够了。(如果您发现自己需要ServiceMix功能的有限子集,您可以始终在Karaf实例中安装这些功能)。

您也可以自定义Karaf分发作为Maven构建的一部分-个人而言,我喜欢将容器作为应用程序的一部分构建,因为我可以在最短的时间内从命令行检出、构建和运行整个设置。

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


9
Karaf起源于ServiceMix的核心。目前,ServiceMix实际上是部署在Karaf容器中的一组bundles。ServiceMix有许多非常方便的bundles,可以做许多Karaf无法完成的酷炫功能。话虽如此,使用ServiceMix的两个主要原因是: 1)想要一个ESB, 2)NMR(这是一种允许您在bundle和Karaf实例之间进行通信的功能)。
所有这些说法,ServiceMix团队当前正在计划版本5,该版本将删除ESB和NMR功能,并专注于成为Camel的管理容器。在ESB中,创建可以使用BPL(Business Process Language)描述的组件需要大量投入。然而,编写ServiceMix的人开始关注EIP(Enterprise Integration Patterns)的实现,这基本上与BPL执行的相同任务,但以更加标准化和普遍接受的方式执行。这项工作是在Camel项目下完成的。
简而言之,如果您使用ServiceMix 4+,那么您也在使用Karaf。如果您想要一个更强大的集成环境,今天(至少在Apache / Felix世界中)首选的环境是Karaf、Camel和来自ServiceMix的几个bundles。

Karaf 是否带有用于 Web 服务的 SOAP 引擎?我知道可以添加 CFX 来实现。我想知道 ServiceMix 是否自带该引擎。 - Malcolm McRoberts
CXF 3.1.9 包含在 Servicemix 7.0.1 中。 - Heiner

3
我做了一个简单的比较图示,从最简单的情况(在底部由Apache Felix提供OSGi功能的JVM),到更完整/可管理的OSGi功能(中间为Apache Karaf),再到足够实现完整ESB实例的功能(在顶部为Apache ServiceMix)(请注意,“ESB”不是产品,而是一组端点、路由器、数据库、ETL功能等,在特定任务方面进行配置)。

From Felix to Karaf to ServiceMix


可能有些之前在Karaf中可用的功能已经迁移到了Felix,但网页上的描述很难理解。 - David Tonhofer
未来会带来什么?[使用ServiceMix还是不使用ServiceMix] (https://dzone.com/articles/servicemix-or-not-servicemix) - David Tonhofer
"Blueprint" 是 Apache Aries Blueprint,它是一个用于 OSGi 的依赖注入框架,并在 OSGi Compendium R4.2 中被 OSGi 联盟标准化。它显然是基于 Spring Dynamic Modules 实现的。然而,在 Springsource,OSGi 似乎已经非常不流行了:搜索结果中没有一个指南 - David Tonhofer

0

Karaf不包含CXF。

它是ServiceMix的纯提取内核。但是,您可以按照以下步骤在Karaf上安装CXF。

karaf:root()> feature:repo:add cxf

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

karaf:root()> feature:repo:feature:list | grep cxf

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

karaf:root()> feature:install cxf


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接