
- 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 管理控制檯。