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

初探 OSGi Web 應用開發利器 Equinox:環境建置完整指南

     編輯:J2EE

在前幾篇《你好,OSGi》系列文章中,我們已經奠定了 OSGi 服務平台運作原理的基礎。接下來的篇章將深入探討如何將 OSGi 可插拔、基於組件的開發模型應用於 Web 應用程式開發。您將學會建立一個基於 Bundle 的 OSGi 應用程式,為靜態資源、Servlet 或 JSP 提供伺服器端服務,並掌握在 Web 應用中利用 Equinox 框架發揮 OSGi 模組化、版本管理與動態服務優勢的實戰經驗。

系列回顧與本篇目標

本系列已介紹 OSGi 開發核心概念,示範如何使用 Equinox 建立簡單的 Hello World 應用,並說明 Spring DM(Spring Dynamic Modules)如何便利地將 Spring 應用部署至 OSGi 容器。本篇將解答開發者最關心的問題:既喜歡 OSGi 理念,該如何用它構建 Web 應用?

您將看到 OSGi 開發模式如何大幅簡化真正可插拔、模組化、組件化的伺服器端應用開發流程。實作將基於 OSGi 參考實作 Equinox,但這次我們將在伺服器端使用 Equinox。首先討論部署 OSGi Web 應用的選項(以 Jetty 或 Tomcat 為例),再提供配置 Web 應用開發環境的簡明指南,最後開發一個簡單的 Hello World OSGi Web 應用並示範多種部署方式。

伺服器端 Equinox 應用開發兩大架構

使用伺服器端 Equinox 開發 OSGi Web 應用有兩種途徑:

  • 將輕量級 Servlet 容器(如 Jetty)內嵌入 OSGi 容器
  • 將 OSGi 容器內嵌入 Web 應用,再部署至 Servlet 容器(如 Apache Tomcat)

好消息是:無論採用哪種方式,開發 OSGi Web 應用的流程完全相同。建議開發階段將 Servlet 容器內嵌入 OSGi 容器;應用就緒後再重新打包部署。接著將學習如何內嵌 Servlet 容器,但首先要完成開發環境建置。

關於 Equinox:生態系快速擴展

伺服器端 Equinox 專案發展迅速,正持續增加對熱門 MVC 框架(如 Apache Struts)、Spring Web 框架,以及主流 ORM 工具(如 Hibernate)的支援。另一個 Eclipse 專案 Rich Ajax Platform 也允許搭配伺服器端 Equinox 開發 Ajax 應用。

建置開發環境:將 Jetty 內嵌至 Eclipse IDE

本練習將輕量級 Servlet 容器內嵌至 OSGi Bundle(即 Eclipse 語境下的 Plug-in)。該外掛安裝至 OSGi 容器後,會監聽 HTTP 請求;收到請求時檢查是否有已安裝的外掛能處理,若有則轉發給對應外掛產生回應,最後由 OSGi 容器傳回客戶端。

伺服器端 Equinox 提供數個預製外掛(內嵌 Servlet 容器的 OSGi 外掛)簡化開發,包含內嵌 Servlet 容器的外掛有:

  • org.eclipse.equinox.http:佔用空間極小,適合資源受限環境
  • org.eclipse.equinox.http.jetty:以 Jetty 為底層引擎,支援 Servlet API 2.4

以下步驟示範將 Jetty 外掛匯入 Eclipse IDE 配置開發環境:

  1. 下載 jettyhttp-anon.psf 至本機
  2. 在 Package Explorer 右鍵選擇 Import > Team > Team Project Set,點擊 Next
  3. 在對話框中點擊 Browse 選擇剛下載的 jettyhttp-anon.psf,如圖 1 所示

匯入外掛專案集

圖 1. 匯入外掛專案集

點擊 Finish 開始匯入,可能需數分鐘視網路速度而定,Eclipse 將從 dev.eclipse.org CVS 倉庫下載必要專案檔案。

匯入完成後,工作空間將出現以下 Bundles:

javax.servlet v2_4
org.apache.commons.logging v1_0_4
org.eclipse.equinox.http.jetty
org.eclipse.equinox.http.registry
org.eclipse.equinox.http.servlet
org.mortbay.jetty v5_1_11

開發環境已就緒,下一步是在 Equinox OSGi 框架中執行 Bundle(操作細節請參考本系列第一篇)。

驗證環境配置

若已在 Equinox OSGi 框架中執行 Bundle,主控台視圖將出現 osgi> 提示符,並可看到 Jetty Servlet 容器產生的資訊,類似列表 1:

列表 1. OSGi 主控台中的 Jetty 啟動資訊

osgi> May 21, 2008 12:28:06 PM org.mortbay.http.HttpServer DOStart
INFO: Version Jetty/5.1.x
May 21, 2008 12:28:07 PM org.mortbay.util.Container start
INFO: Started org.mortbay.jetty.servlet.ServletHandler@f47bf5
May 21, 2008 12:28:07 PM org.mortbay.util.Container start
INFO: Started HttpContext[/,/]
May 21, 2008 12:28:07 PM org.mortbay.http.SocketListener start
INFO: Started SocketListener on 0.0.0.0:80
May 21, 2008 12:28:07 PM org.mortbay.util.Container start
INFO: Started org.mortbay.http.HttpServer@1f6df4c

待看到 INFO: Started org.mortbay.http.HttpServer@1f6df4c 後再進行下一步。

瀏覽器輸入 https://localhost/ 驗證 Jetty 伺服器運作。預期會看到 404 錯誤頁面(列表 2),因為 Jetty 找不到請求資源,且 OSGi 外掛不提供預設索引頁:

列表 2. Jetty 404 錯誤資訊

HTTP ERROR: 404
ProxyServlet: /
RequestURI=/
Powered by Jetty://

若您的設置與上述吻合,下一篇即可開始第一個實作:使用伺服器端 Equinox 開發基於 OSGi 的 Web 應用程式,敬請期待!

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