Web 应用程序正如 OSGi Web Container 规范定义的那样,OSGi 应用程序的 Web 内容仅是具有其他 OSGi 元数据的 Web 模块。该规范定义了 Web 应用程序 bundle 所需的元数据。部署时,WebSphere Application Server 将 EBA 中的 WAR 文件转换为 OSGi bundle。将 Web 模块作为 bundle 部署的优势是,可以将其依靠的库从 WAR 移动到集中式、托管的、版本化的 bundle 库中,在 WebSphere Application Server 部署流程中使用该库。
Blueprint 介绍了 Java EE 中一种称为 Blueprint 的主要技术,这是 Spring Dependency Injection 模型的标准化。尽管企业级 OSGi 应用程序不需要使用 Blueprint,但是 WebSphere Application Server 实现提供了许多功能,这些功能使 Blueprint 成为开发人员乐于使用的一种技术。
OSGI 功能包的 Blueprint 实现提供了用户期望 Dependency Injection (DI) 容器拥有的功能;例如,使用 POJO 进行构建的能力,以及使容器控制那些 POJO 生命周期的能力。通过 DI 容器(比如 Spring Framework)进行 Blueprint 实现的一个好处是 OSGi 整合。这意味着发布服务的 bundle 稍后可以被注入其他组件甚至是其他 bundle 中。此依赖性注入模型还支持在 Java EE 或 OSGi 运行时以外的时间进行单元测试。
在 OSGi 功能包中实现的 Blueprint 容器是中间件的一部分,而不再是应用程序的一部分,这就为应用程序员消除了一个令人头疼的问题。
结束语寻找可靠和已验证的模块化技术的企业 Web 应用程序开发人员,已经有很多都转向了使用 OSGi。IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 提供了一种环境,该环境支持 Java EE 开发人员使用 OSGi 功能构建应用程序。
用户对 OSGi 功能包的反馈、对 Apache Aries 的兴趣,以及对现有 WebSphere Application Server 的兴趣表明,Java EE 开发人员乐于使用 OSGi 技术,并期待它提供的许多好处。