有人使用 Karaf 而不是 Servicemix 吗?如果是这样,您是如何做出这个决定的?我知道Servicemix在Karaf周围添加了一层功能,只是好奇Karaf是否单独使用以及为什么......
4 回答
我们将 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 构建的一部分——我个人喜欢将容器作为应用程序构建的一部分,因为我可以在最短的时间内从命令行签出、构建和运行整个设置。
最近有一个名为Cellar的 Karaf 集群子项目使用 HazelCast,我不确定这是否也适用于 ServiceMix。
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 不与CXF 一起提供。
其ServiceMix的纯提取内核。但是,您可以在 Karaf 上安装 CXF,如下所示。
karaf:root()> 特征:repo:add cxf
添加功能 URL 后,我们可以使用以下命令查看“提供的”功能。
karaf:root()> 功能:repo:功能:列表 | grep cxf
要安装 cxf,请执行以下命令
karaf:root()> 功能:安装 cxf