Web 應用與 OSGi
自 Spring Dynamic Modules 首個里程碑釋出以來,在 OSGi 中執行 web 應用的需求便接踵而至。這可能是最受期待的功能之一,也難怪,1.0 最終版本釋出後,Web 支援便成為 1.1 分支的主要重點。我很高興地報告,隨著剛剛釋出的 M2,正如 Juergen 已經暗示的,Spring-DM 不僅支援普通的 war 包(自 1.1.0 M1 起可用),還支援在 OSGi 內部執行的 Spring-MVC 應用。在這篇文章中,我想簡要討論典型的 OSGi web 場景和 Spring-DM 的方法。但首先,
為何在 OSGi 中部署 WAR 包?
簡單的問題:OSGi 原生提供了版本控制、包連線和熱過載。想象一下在你的應用中利用這些特性:你可以停止在以下目錄中嵌入庫WEB-INF/lib並開始在你的 web 應用之間共享它們,避免 taglibs 重複(同時保持多個版本執行),並在執行時只更新應用的某些部分。這尤其有用,因為 web 應用往往是分層的,因此在其生命週期中會經歷大量的變化。為何在 OSGi 中執行 web 應用會存在問題?
Servlet 規範圍繞著 web 容器 的概念展開:一個為 web 元件提供標準服務(例如生命週期管理(物件建立和銷燬、執行緒分配)、併發、HTTP 請求處理等等)的執行時環境。另一方面,OSGi 平臺也作為一個託管環境,擁有其服務登錄檔、包連線和版本控制(僅舉幾例)。為了解決這個問題,OSGi 委員會在綱要規範中設計了 Http Service。…