- JBoss Fuse 教程
- JBoss Fuse – 首页
- JBoss Fuse - ESB 简介
- 什么是 Fuse?
- JBoss Fuse – Apache Karaf
- JBoss Fuse – Apache Camel
- JBoss Fuse – Camel 概念
- JBoss Fuse – Apache CXF
- JBoss Fuse – REST Web 服务
- JBoss Fuse – Apache AMQ
- JBoss Fuse – Camel 与 AMQ
- JBoss Fuse – Fabric
- JBoss Fuse – 子容器
- JBoss Fuse – 问题与解决方案
- JBoss Fuse 有用资源
- JBoss Fuse - 快速指南
- JBoss Fuse - 有用资源
- JBoss Fuse - 讨论
JBoss Fuse - Apache Karaf
本章将讨论 Apache Karaf,以及为什么它被称为轻量级 OSGi 容器,并介绍其优势和其他重要特性。
JVM 问题
JVM(Java 虚拟机)并非真正意义上的虚拟机。它不能让你随时停止、启动或重启其中运行的组件。有时它可能允许类级别的热部署,但无法在不重启虚拟机的情况下部署或卸载应用程序组件。
为了解决这个问题并在 Java 应用程序中实现模块化,Fuse 使用基于 OSGi 的运行时环境,即 Apache Karaf。
OSGi
OSGi 技术是一套规范,定义了 Java 的动态组件系统。这些规范允许开发模型,其中应用程序由许多不同的(可重用)组件(动态)组成。
OSGi 的优势
降低复杂性 - 应用程序构建为协作组件,彼此隐藏实现细节,从而降低复杂性。
可重用性 - 许多组件可以利用部署在容器中的相同组件。
部署 - OSGi 通过其生命周期管理 API 提供了对组件的即时启动、停止和更新的支持,无需重启容器。
Bundle 与 Feature
以下是 Bundle 和 Feature 的比较。
Bundle
Bundle 相当于 OSGi 中的 jar 文件在 JVM 中的地位。Bundle 是可在 OSGi 容器中部署的工件。Bundle 是协同工作或独立工作以构成应用程序的组件。
这些 Bundle 可以在运行时安装、卸载、更新、启动或停止,而无需重启容器。
Feature
Feature 是一种将多个 Bundle 一起部署的方式。有时,将 Bundle 分组部署更有意义。Feature 允许我们只用一个命令部署一组 Bundle。
为什么需要另一个容器?
Apache Karaf 是一个基于 OSGi 的运行时环境,我们的应用程序 Bundle 在其中运行。Fuse 使用 Apache Karaf 作为其运行时环境,Bundle 在其中运行并协作以提供业务功能。
Karaf 基于 Felix 和 equinox,它们是 OSGi 框架。
Karaf 架构
Apache Karaf 为基本的 OSGi 运行时添加了以下附加功能。
热部署
Karaf 支持热部署。它包含一个热部署目录。放置在这个目录中的任何内容都会自动部署并作为 Bundle 安装到 Karaf 中。
日志记录
Karaf 通过为所有 Bundle 生成日志到 **$Fuse_home/data/log** 来提供集中式日志记录。我们可以在 **$Fuse_home/etc** 目录下的 **org.ops4j.pax.logging.cfg** 文件中编辑日志记录器配置。
管理控制台
Karaf 提供了一个复杂且清晰的管理控制台来与 Fuse 的运行实例交互。它还提供了一套预安装的命令,可用于在运行时管理和监控组件(Bundle)。此控制台是可扩展的,因此允许我们通过向控制台添加新的 Bundle 来添加新的命令。
SSH 访问
Karaf 允许通过 SSH 远程访问此管理控制台。任何拥有有效凭据的人都可以通过 SSH 终端连接到 Karaf 管理控制台。