领先一步
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 的清单文件中来启用此功能:
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 的新组件的形式出现,该组件运行在 OSGi Web 容器之上,dm Server 现在在其之前的 Web 支持中嵌入该容器。一切顺利的话,它应该在本周末准备好。敬请关注!