將 WAR 部署到 OSGi Web 容器現在更加容易

工程 | Andy Wilkinson | 2009 年 6 月 16 日 | ...

正如 Rob 在他關於 OSGi Web 容器的介紹 中提到的,dm Server 會自動將系統包匯入 Web 捆綁包。這被證明非常有用,尤其是在將現有的 WAR 檔案部署到 OSGi 環境時。我最近花了一些時間將此功能從 dm Server 的 Web 子系統遷移到 OSGi Web 容器 RI。這篇博文將介紹新功能,以及如何使用它。

啟用系統包的匯入

有兩種方法可以指示 RI 匯入所有匯出的系統包。

安裝 Web bundle 時,現在可以使用 SpringSource-SystemPackages URL 引數來自動匯入系統 bundle 的所有匯出。例如:

install webbundle:file:mywar.war?SpringSource-SystemPackages=import

或者,如果您不想每次安裝 WAR 檔案時都記得指定該引數,可以透過將 SpringSource-SystemPackages 頭新增到 WAR 的 manifest 來啟用此功能。

SpringSource-SystemPackages: import

匯入哪些包?

RI 會為系統 bundle 匯出的每個包生成一個匯入,除非 WAR 檔案已經匯入了該包,或者該包包含在 WEB-INF/classes 中,或者包含在 WEB-INF/lib 的 Jar 包中。如果 WAR 檔案已經匯入或包含該包,則系統 bundle 的匯出將被忽略,任何現有的匯入將保持不變。在生成新匯入的情況下,它將以一個版本範圍生成,該版本範圍精確地包含從系統 bundle 匯出的版本。

試用

首先,按照 Rob 之前 描述 的方式構建並啟動 RI。需要注意的是,如果您使用的是 RI 的早期版本,則應該使用 clean 選項啟動 PAX runner,以確保它使用新構建的 RI bundle 而不是快取中的 bundle。

pax-run --clean --platform=equinox --snapshot runner.bundles

以前,為了成功使用 formtags WAR,需要使用 Import-Package URL 引數匯入一些包。

install webbundle:file:formtags.war?Import-Package=org.xml.sax,org.xml.sax.helpers,javax.xml.parsers,org.w3c.dom

這有點麻煩,因為您需要知道要匯入哪些包。現在,您可以使用 SpringSource-SystemPackages URL 引數。

osgi> install webbundle:file:formtags.war?SpringSource-SystemPackages=import
Bundle id is 43

在安裝 formtags Web bundle 時無需列出要匯入的特定包,它現在應該可以成功啟動。

osgi> start 43

下一步是什麼?

我們一直在開發一個真正模組化的 OSGi Web 應用程式的原型,並且非常接近向您展示。它將是一個新的 dm Server 元件,執行在 dm Server 現在嵌入的 OSGi Web 容器之上,取代了它以前的 Web 支援。一切順利的話,應該在本週末準備就緒。請持續關注!

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有