下载后可任意编辑基于 OSGi 和 Spring 开发 Web 应用作为一个新的事实上的工业标准,OSGi 已经受到了广泛的关注, 其面对服务(接口)的基本思想和动态模块部署的能力, 是企业级应用长期以来一直追求的目标。Spring 是一个著名的 轻量级 J2EE 开发框架,其特点是面对接口编程和非侵入式的依赖注入。将 OSGi 和 Spring 结合能充分发挥二者各自的特长,更好地满足企业级应用开发的需求。Spring 开发组织在 2024 年发布了将 OSGi 和 Spring 结合的第一个版本:Spring-DM。dm Server 是一个完全模块化部署的,基于 OSGi 的 Java 服务器,为运行企业Java 应用和 Spring 应用提供更加强大的灵活性和可靠性。SpringSource 应用平台是构建在 Spring、OSGi 和 Apache Tomcat 之上的应用服务器,这个新的应用服务器摒弃了原有的 Java EE 服务器标准,自然而然地将 Spring 编程模型展现其中,随之而来的还有一套基于 OSGi 内核构建的全新部署和打包系统。本文通过一个简单实例,介绍如何利用 Spring-DM 开发基于 OSGi 和 Spring 架构的 Web 应用,同时探讨其中用到的关键技术及其基本思想。实例教程:一、. 指定 Target Platform 到所用到的所有的 bundle 包的目录中。下载后可任意编辑二、 创建一个 Service 接口 bundle新建一个接口类:com.infotech.test.common.ShowMsgInfo下载后可任意编辑同时新加一个接口方法:public String GetMsgInfo();打开这个接口 bundle 工程的 MANIFEST.MS 文件,在 Runtime/Exproted Packages 中添加刚刚新建的接口类,使之对外提供这个服务。三、 创建一个接口 bundle 的实现 bundle下载后可任意编辑打开这个接口 bundle 工程的 MANIFEST.MS 文件,在 Dependencies/Imported Packages 中添加上面新建的接口类新建一个接口实现类:ShowMsgInfo下载后可任意编辑在这个类中,实现接口中的方法:package com.infotech.test.service;import com.infotech.test.common.IShowMsgInfo;public class ShowMsgInfo implements IShowMsgInfo {@Overridepublic String GetMsgInfo() {return "Hello Word!!!";}}接下来,我需要将这个实现类发布成为一个 OSGI 服务:在工程新一个目录 OSGI-INF ,并新建一个 components.xml 文档。