取得领先
VMware 提供培训和认证,以加速您的进步。
了解更多正如 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 支持。 一切顺利的话,应该在本周末之前准备好。 敬请关注!