首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

OSGi Web 應用部署實戰:Equinox 命令列啟動與 Tomcat 嵌入式部署雙模式

     編輯:J2EE

「Hello OSGi」系列最終篇,詳細演示如何在 Eclipse IDE 外部部署運行 OSGi Web 應用:模式一——命令列啟動 Equinox 容器、手動安裝/啟動 Bundle、嵌入 Jetty 提供 HTTP 服務;模式二——將 Equinox 容器封裝於 bridge.war,部署至 Tomcat,實現 OSGi 運行時與傳統 Servlet 容器共生。兩種模式涵蓋獨立部署與現有基礎設施整合兩大主流場景。

模式一:純 Equinox + Jetty 命令列部署

1. 準備運行時組件

從 Equinox 下載 eclipse-equinox-<build>.zip,解壓至 C:\equinox,複製以下 JAR:

  • org.eclipse.osgi_<ver>.jar(核心框架)
  • javax.servlet_2.4.jar、org.apache.commons.logging_1.0.4.jar
  • org.eclipse.equinox.http.jetty.jar、org.eclipse.equinox.http.registry.jar、org.eclipse.equinox.http.servlet.jar(HTTP 服務與 Jetty 整合)
  • org.mortbay.jetty_5.1.11.jar(Jetty 核心)
  • org.eclipse.equinox.common_<ver>.jar、org.eclipse.equinox.registry_<ver>.jar、org.eclipse.osgi.services_<ver>.jar

2. 啟動容器與安裝 Bundle

cd C:\equinox
java -jar org.eclipse.osgi_<ver>.jar -console
osgi> install file:javax.servlet_2.4.jar
osgi> install file:org.apache.commons.logging_1.0.4.jar
... 安裝其餘 JAR ...
osgi> ss          # 驗證狀態,應顯示 INSTALLED
osgi> start <bundleId>  # 逐個啟動,核心框架為 0 已 ACTIVE
osgi> ss          # 確認全部 ACTIVE

3. 驗證 Web 應用

瀏覽器訪問 https://localhost/helloworld.html,顯示「Hello from helloworld.html」即成功。Jetty 以 OSGi HTTP Service 形式運行,靜態資源與 Servlet 均由 Bundle 註冊處理。

模式二:bridge.war 嵌入 Tomcat 部署

1. 原理

bridge.war 內含 org.eclipse.equinox.servletbridge.BridgeServlet,啟動時在 Tomcat 建立 Equinox 容器,攔截請求並委派給 OSGi HTTP Service 處理。Tomcat 提供 Servlet 容器與監聽端口,Equinox 提供模組化運行時,兩者協作。

2. 步驟

  1. 安裝 Tomcat 5.5,部署 bridge.war,啟動驗證 https://localhost:8080/bridge/sp_test 顯示 BridgeServlet 就緒。
  2. Eclipse 中右鍵專案 → Export → Deployable plug-ins and fragments,輸出目錄指向 Tomcat/webapps/bridge/WEB-INF/eclipse/plugins。
  3. 重啟 Tomcat,控制台出現 osgi> 提示符。
  4. ss 確認應用 Bundle 已安裝,start <id> 啟動。
  5. 訪問 https://localhost:8080/bridge/helloworld.html 驗證。

Bridge 管理端點:瀏覽器即控制台

部署後可直接呼叫以下 URL 管理平台(無需 SSH/控制台):

端點功能
/bridge/sp_deploy複製平台內容至工作目錄
/bridge/sp_undeploy刪除工作目錄副本
/bridge/sp_redeploy完整重置(停止→卸載→部署→啟動)
/bridge/sp_start啟動已部署平台
/bridge/sp_stop停止平台
/bridge/sp_test健康檢查

系列總結:從 Hello World 到生產部署

本系列涵蓋:

  1. OSGi 開發模式與 Client-Server 範例
  2. Spring DM 簡化服務註冊注入
  3. 程式化與聲明式 HTTP 服務註冊
  4. 獨立 Equinox+Jetty 命令列部署
  5. Tomcat + bridge.war 嵌入式部署

OSGi 起源嵌入式領域,但服務端模組化才是其殺手級應用場景。Equinox 服務端版與 SpringSource dm Server 為將 OSGi 引入企業級 Web 開發提供了兩條成熟路徑。掌握上述部署模式,即可在現有 Java 基礎設施上平滑導入模組化架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved