取得领先
VMware 提供培训和认证来加速您的进步。
了解更多自从 Spring Dynamic Modules 的第一个里程碑版本以来,就不断有关于在 OSGi 中运行 Web 应用程序的请求。 这可能是最受请求的功能之一,毫不奇怪,一旦 1.0 最终版发布,Web 支持就成为 1.1 分支的主要关注点。 我很高兴地报告,随着刚刚发布的 M2,正如 Juergen 已经暗示的那样,Spring-DM 不仅支持 vanilla war 文件(自 1.1.0 M1 起可用),还支持在 OSGi 中运行的 Spring-MVC 应用程序。 在这篇文章中,我想简要讨论典型的 OSGi Web 场景和 Spring-DM 的方法。 但首先,
顺便说一句,当处理两个托管环境时,人们面临一个有趣的问题:使用什么部署模型? 也就是说,哪个是引导平台,哪个是嵌入的? 在我们的例子中,可以部署 OSGi 平台作为一个 WAR 文件,或者在 OSGi 平台内部部署 Web 容器(以某种服务形式)。 不过,更多关于这方面的内容将在以后的文章中介绍。
这个可选服务提供了一个简单的 API 用于注册Servlet和映射到传入 HTTP 请求的静态资源。 为了有一个Servlet在 OSGi 内部提供服务的实例,必须以编程方式创建Servlet实例并通过上述 API 注册它。 此外,Http 服务仅支持Servlet2.1 规范,这可能非常不方便,因为过滤器和监听器(今天几乎所有 Web 框架都在使用)都不可用。 目前可用的(据我所知)在 OSGi 中运行 Web 应用程序的大多数(如果不是全部)解决方案都依赖于 Http Service 的功能。 一些人使用以下技术之一(据我所知)解决了上述问题
使用 Spring-DM,你可以获得
以上所有以及更多都是可能的,因为 Spring-DM 将 bundles **原生** 部署到所选的 Web 容器(目前开箱即支持 Apache Tomcat 5.5.x/6.0.x 和 Jetty 6.1.x+)。 这意味着 Web 容器实例化和管理 Web 应用程序,因此容器支持的几乎所有内容都可供 OSGi bundles 使用。
虽然 1.1 尚未最终发布,但我鼓励您尝试一下 M2。 API 几乎是稳定的,并且新功能已经记录(随着我们接近 GA 版本,会有更多内容) - 如果您需要帮助,请查看 Spring-DM 论坛(是的,我们终于有了一个)和邮件列表。 此外,如果您恰好在 JavaOne,请到 SpringSource 展位,您将从源头获得答案。