`
superseven
  • 浏览: 109121 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初探 OSGi

 
阅读更多

初次接触OSGI还是在去年刚进公司的时候,那时候第一次听到了OSGI的框架,去看了下感觉挺好玩的,不过就看了一阵也就放下了,我记得当时主管还说了我一次,因为有点不务正业,感觉那时候还没怎么用得上这个技术。过了小半年,到了现在OSGI已经成为我们这边的一个比较红火的词汇,可能是因为上次在B2B那边的技术分享上提到了一种分布式解决方案中提到了,感觉也是一个流行趋势,所以就开始重视起来了。

      什么是OSGI呢?OSGI —— Open Service Gateway Initiacive 字面上的意思是一个公共的服务平台。1999年OSGI联盟成立,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开发的标准,是开放网关的发起者。早期的OSGI的设计是针对嵌入式应用的如机顶盒、手机、汽车等都是其应用的环境。后来,由于OSGi 的诸多优秀特性(可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等),它被应用于许多PC 上的应用开发,因此逐步为开发者所知和钟爱。现在人们对OSGi 的理解已经远远不是它字面和初衷所能解释的了,称其为一个轻巧的、松耦合的、面向服务的应用程序开发框架还是更为确切一些。

          OSGI框架图如下:
          

  其中OS 层和JVM 层可以不用详细介绍了,重点需要关注的是应用程序Bundles 层。框架本身提供的类加载,生命周期管理,服务注册和规范服务也都是针对Bundles 的。每一个在OSGI框架中运行的逻辑单元称为Bundle,Bundle实际上是一个符合特定格式的jar文件。每一个Bundle的功能可以是抽象也可以是具体的,所谓抽象,就是它不是一个具体的应用,没有完成一些业务功能,而只暴露了一些接口或者功能给其他的Bundle 使用;所谓具体,就是该Bundle 可以独立的完成一个功能,例如连接数据库,获取数据等等。

     Bundle具有6种状态,分别是:

        installed——Bundle 正在被启动

        resolved——依赖关系满足,即该Bundle 要么是准备好运行了,要么是已经被停止了

        starting——Bundle 正在被启动

        stopping——Bundle 正在被停止

        active——Bundle 被激活,正在运行中

        uninstalled——Bundle 被卸载了

  OSGI有他自身的类加载机制,从而控制这些加载的Bundles之间的依赖关系,而生命周期管理也是OSGi 的一大亮点,由于可动态的对这些加载的Bundles 进行安装、卸载、启动、停止等操作,所以可以动态的改变应用程序的运行状态。当一系列的Bundles 存在于服务器中的时候,那么它们之间必然会存在通信协作的部分,比如说一个通过网页捕获用户输入的Bundle 执行的时候,它必须首先需要一个Web 服务器服务的支持,那么这个时候服务注册器就会从整个OSGi容器中寻找这个服务,如果能完成服务的匹配,那么相应的功能就会很自然的实现了。OSGi 规范还规定了一组预设的服务,包括日志、服务管理等等,这些服务在主流的开源框架中都有实现。OSGi 框架中还包括一个安全层,OSGi 的安全层扩展了Java 的安全机制,增并加了一些新的约束以填补了Java安全机制中的遗漏。

 

分享到:
评论

相关推荐

    OSGi入门资料-初探OSGi 的全文

    OSGi的入门资料,网上找的,初探OSGi 的全文

    OSGI 实践 资料 pdf中文

    4. "初探OSGi的全文_程序人生.htm":这可能是介绍OSGi基础知识的文章,适合初学者入门。 5. "PatternsInJava(GOF java设计模式).pdf":设计模式是软件工程中的重要概念,理解它们有助于更好地利用OSGi进行模块化设计...

    plugins1.rar

    《Eclipse for C++初探:plugins1.rar详解》 在编程领域,Eclipse是一款备受推崇的集成开发环境(IDE),尤其在C++开发者中有着广泛的使用。"plugins1.rar"这个压缩包文件,正如其名,是Eclipse for C++的一部分,...

    spring 帮助文档

    ##### 3.2 AspectJ 6初探 AspectJ是另一种流行的AOP框架,与Spring AOP相比,它提供了更强大的编译期和运行期的切面编程支持。Spring 3.1增加了对AspectJ的支持,允许开发者在Spring应用中使用AspectJ的切面。 ###...

    spring-3.1.0中文版api帮助文档

    **3.2 AspectJ 6初探** - **AspectJ介绍**:了解AspectJ 6的新特性和改进。 **3.3 老式Spring AOP** - **传统Spring AOP**:回顾早期Spring AOP的实现方式。 **3.4 基于@AspectJ的Spring AOP** - **@AspectJ...

    Spring3_权威开发指南

    - **全面拥抱OSGi 4.2**:介绍了Spring3如何支持OSGi模块化标准,使应用程序能够更容易地管理和部署。 - **开发者决定一切**:强调了Spring框架设计的核心理念——灵活性,让开发者可以根据项目需求自由选择所需的...

    Project-Mule1

    【标题】:Mule ESB 项目初探 在IT领域,企业服务总线(Enterprise Service Bus,ESB)是一种架构模式,用于实现不同应用程序之间的松耦合通信。Mule ESB 是一个开源的ESB产品,由MuleSoft公司开发,它提供了强大的...

Global site tag (gtag.js) - Google Analytics