領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多正如 Rob 在他的 OSGi Web 容器簡介中所提到的,dm Server 會自動將系統套件匯入到 Web Bundle 中。這證明非常有用,尤其是在將現有的 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,而不是其快取中的那些
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 的新組件的形式,該組件運行在 OSGi Web 容器之上,而 dm Server 現在嵌入該容器以取代其先前的 Web 支援。如果一切順利,它應該在本週末準備好。請關注此空間!