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