領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多正如 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 支援。一切順利的話,應該在本週末準備就緒。請持續關注!