JBoss Fuse - Apache Karaf

在本章中,我们将讨论 Apache Karaf 以及它被称为轻量级 OSGi 容器的原因,以及它的优点和其他重要功能。

JVM 问题

JVM 或 Java 虚拟机不充当实际的虚拟机。它允许您随时停止、启动或重新启动在其中运行的组件。它有时可能允许在类级别进行热部署,但您无法在不重新启动虚拟机的情况下部署或取消部署应用程序的组件。

为了解决这个问题并允许 Java 应用程序中的模块化,Fuse 使用基于 OSGi 的运行时,称为 Apache Karaf。

OSGi

OSGi 技术是一组定义 Java 动态组件系统的规范。这些规范允许一种开发模型,其中应用程序(动态地)由许多不同的(可重用)组件组成。

OSGi 的好处

  • 降低复杂性 − 应用程序构建为协作组件,彼此隐藏其实现细节,从而降低复杂性。

  • 可重用性 − 许多组件可以利用部署在容器中的相同组件。

  • 部署 − OSGi 通过其生命周期管理 API 提供对动态启动、停止和更新组件的支持,无需重新启动容器。

Bundles 与 Features

以下是 Bundles 与 Features 之间的比较。

Bundles

Bundles 与 OSGi 的关系相当于 jar 与 JVM 的关系。Bundles 是可在 OSGi 容器中部署的工件。Bundles 是可以协同或独立工作以形成应用程序的组件。

这些 Bundles 可以在运行时安装、卸载、更新、启动或停止,而无需重新启动容器。

Features

Features 是一种将多个 Bundles 一起部署的方式。有时成组部署 Bundles 更有意义。这些功能允许我们仅使用一个命令即可部署一组包。

为什么要使用另一个容器?

Apache Karaf 是一个基于 OSGi 的运行时,我们的应用程序包就是在这里运行的。Fuse 使用 Apache Karaf 作为其运行时,包在其中运行并协作以提供业务功能。

Karaf 建立在 Felix 和 equinox 上,它们是 OSGi 框架。

Karaf 架构

Karaf 架构

Apache Karaf 为基​​本 OSGi 运行时添加了以下附加功能。

热部署

Karaf 支持热部署。它包含一个热部署目录。放置在此目录中的所有内容都会自动部署并作为包安装在 Karaf 中。

日志记录

Karaf 通过在 $Fuse_home/data/log 中为所有包生成日志来提供集中日志记录。我们可以在 $Fuse_home/etc 目录 中的 org.ops4j.pax.logging.cfg 中编辑记录器配置。

管理控制台

Karaf 提供了一个复杂而清晰的管理控制台来与正在运行的 fuse 实例进行交互。它还提供了一组预安装的命令,可用于在运行时管理和监控组件(包)。此控制台是可扩展的,因此我们可以通过向控制台添加新包来向控制台添加新命令。

管理控制台

SSH 访问

Karaf 允许使用 SSH 远程访问此管理控制台。任何拥有有效凭据的人都可以通过 SSH 终端连接到 karaf 管理控制台。