現在可以更輕鬆地將 WAR 檔案部署到 OSGi Web 容器了

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

正如 Rob 在他的 OSGi Web 容器簡介 中提到的那樣,dm Server 會自動將系統包匯入到 Web 捆綁包中。 事實證明這非常有用,尤其是在將現有 WAR 檔案部署到 OSGi 環境中時。 我最近花了一些時間將此功能從 dm Server 的 Web 子系統移動到 OSGi Web 容器 RI 中。 本部落格描述了新功能以及如何使用它。

啟用系統包的匯入

您可以透過兩種方式指示 RI 匯入所有匯出的系統包。

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

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

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

SpringSource-SystemPackages: import

匯入哪些包?

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

嘗試一下

首先,按照 Rob 之前 描述 的方式構建並啟動 RI,但如果您使用了 RI 的先前版本,則應使用 clean 選項啟動 PAX runner,以確保它使用新構建的 RI 捆綁包,而不是其快取中的捆綁包

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 捆綁包時要匯入的特定包,它現在應該可以成功啟動

osgi> start 43

下一步是什麼?

我們一直在研究真正的模組化 OSGi Web 應用程式的原型,並且我們越來越接近向您展示一些東西。 它將以 dm Server 的一個新元件的形式出現,執行在 OSGi Web 容器之上,該容器現在嵌入在 dm Server 中,以取代其以前的 Web 支援。 一切順利的話,應該在本週末之前準備好。 敬請關注!

獲取 Spring 新聞郵件

透過 Spring 新聞郵件保持聯絡

訂閱

取得領先

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

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

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

檢視全部