在本章中,我们将讨论 Apache Karaf 以及为什么它被称为轻量级 OSGi 容器,以及它的优点和其他重要功能。
JVM 或 Java 虚拟机并不充当实际的虚拟机。这是一台允许您即时停止、启动或重新启动其中运行的组件的机器。有时它可能允许在类级别进行热部署,但如果不重新启动它,则无法在虚拟机中部署或取消部署应用程序的组件。
为了解决此问题并允许 Java 应用程序中的模块化,Fuse 使用基于 OSGi 的运行时(称为 Apache Karaf)。
OSGi 技术是一组定义 Java 动态组件系统的规范。这些规范允许开发由许多不同(可重用)组件(动态)组成的应用程序的模型。
这里是捆绑包和功能之间的比较。
Bundle相当于OSGi,jar相当于JVM。捆绑包是可在 OSGi 容器内部署的工件。捆绑包是一起或独立工作以形成应用程序的组件。
这些捆绑包可以在运行时安装、卸载、更新、启动或停止,而无需重新启动容器。
功能是一种将多个捆绑包一起部署的方法。有时,按组部署捆绑包更有意义。功能允许我们仅使用一个命令即可部署一组捆绑包。
Apache Karaf 是一个基于 OSGi 的运行时,我们的应用程序包在其中运行。 Fuse 使用 Apache Karaf 作为其运行时,其中捆绑包运行并协作以提供业务功能。
Karaf 构建于 OSGi 框架 Felix 和 Equinox 之上。
Apache Karaf 向基本 OSGi 运行时添加了以下附加功能。
Karaf 支持热部署。它包含一个热部署目录。放置在该目录中的所有内容都将自动作为捆绑包部署并安装在 Karaf 中。
Karaf 通过为 $Fuse_home/data/log 中的所有 包生成日志来提供集中式日志 日志记录 。我们可以在 $Fuse_home/etc 目录中的 org.ops4j.pax.logging.cfg 中编辑记录器配置。
Karaf 提供了一个复杂而清晰的管理控制台,用于与正在运行的 Fuse 实例进行交互。它还提供了一组预安装的命令,可用于在运行时管理和监视组件(捆绑包)。控制台是可扩展的,因此它允许我们通过向控制台添加新包来向控制台添加新命令。
Karaf 允许使用 SSH 远程访问此管理控制台。任何拥有有效凭据的人都可以通过 SSH 终端连接到 karaf 管理控制台。