`
peng_07
  • 浏览: 4700 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring学习笔记之—什么是OSGI

 
阅读更多

OSGI

OSGi技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。

 

基本简介

OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方。OSGi联
  

OSGI

盟已经开发了为例如象HTTP服务器、配置、日志、安全、用户管理、XML等很多公共功能标准组件接口。这些组件的兼容性插件实现可以从进行了不同优化和使用代价的不同计算机服务提供商得到。然而,服务接口能够基于专有权基础上开发。

  因为OSGi技术为集成提供了预建立和预测试的组件子系统,所以OSGi技术使你从改善产品上市时间和降低开发成本上获益。因为这些组件能够动态发布到设备上,所以OSGi技术也能降低维护成本和拥有独一无二的新的配件市场机会。

 

框架结构

OSGi规范的核心组件是OSGi框架。这个框架为应用程序(被叫做组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次:
  

OSGI

L0:运行环境  L1:模块  L2:生命周期管理  L3:服务注册  还有一个无处不在的安全系统渗透到所有层。  L0层执行环境是Java环境的规范。Java2配置和子规范,象J2SE,CDC,CLDC,MIDP等等,都是有效的执行环境。OSGi平台已经标准化了一个执行环境,它是基于基础轮廓和在一个执行环境上确定了最小需求的一个小一些的变种,该执行环境对OSGi组件是有用的。  L1模块层定义类的装载策略。OSGi框架是一个强大的具有严格定义的类装载模型。它基于Java之上,但是增加了模块化。在Java中,正常情况下有一个包含所有类和资源的类路径。OSGi模块层为一个模块增加了私有类同时有可控模块间链接。模块曾同安全架构完全集成,可以选择部署到部署封闭系统,防御系统,或者由厂商决定的完全由用户管理的系统。  L2生命周期层增加了能够被动态安装、开启、关闭、更新和卸载的bundles。这些bundles依赖于于具有类装载功能的模块层,但是增加了在运行时管理这些模块的API。生命周期层引入了正常情况下不属于一个应用程序的动态性。扩展依赖机制用于确保环境的操作正确。生命周期操作在安全架构保护之下,使其不受到病毒的攻击。

  L3层增加了服务注册。服务注册提供了一个面向bundles的考虑到动态性的协作模型。bundles能通过传统的类共享进行协作,但是类共享同动态安装和卸载代码不兼容。服务注册提供了一个在bundles间分享对象的完整模型。定义了大量的事件来处理服务的注册和删除。这些服务仅仅是能代表任何事物的Java对象。很多服务类似服务器对象,例如HTTP服务器,而另一些服务表示的是一个真实世界的对象,例如附近的一个蓝牙手机。这个服务模块提供了完整安全保障。该服务安全模块使用了一个很聪明的方式来保障bundles之间通信安全。

 

安全协议

安全机制是建立在Java和Java2安全模型基础之上。Java语言的设计对很多结构进行了限
  

 

制。例如病毒中经常遇到的缓存溢出是不可能发生的。Java语言中的访问控制符限制了代码可见性。  OSGi平台通过使用私有类(在Java中不能用标准方式使用的机制)扩展了该模型。Java2安全模型提供了一个完整模块检查代码对于资源的可访问性。OSGi增加了完全动态的权限管理,简化了操作者和系统管理员的工作。  OSGi联盟已经定义了很多协议服务,这些服务将外部协议映射为OSGi服务。HTTP服务(HttpService)该HTTP服务是servlet运行器。bundles提供servlets,这些服务端小程序基于HTTP协议成为可用的。OSGi服务平台的动态更新功能使HTTP服务成为一个非常具有吸引力的Web服务器,它能伴随着新的servlet被更新,如果需要可以远程更新而无需重启。  UPnP服务(UPnPService)通用即插即用(UPnP)是一个正在形成中的消费电子标准。OSGi中的UPnP服务在一个UPnP网络上将设备映射到服务注册中。同样,它也可以将OSGi服务映射到UPnP网络。这是发布版本3中的推荐规范。

  DMT管理(DMTAdmin)开放移动联盟(OMA)基于设备管理树为移动设备管理提供了一个完整规定。DMT管理服务定义该树如何被访问和/或者在OSGi服务平台中被扩充。

 

标准服务

在该框架之上,OSGi联盟定义了很多服务。这些服务通过一个Java接口指定。bundles能够实
  

OSGI

现这个接口,并在注册服务层注册该服务。服务的客户端在注册库中找到它,或者当它出现或者消失时做出响应。这个同SOA架构使用Web服务进行发布的方式相似。

  两者主要不同是Web服务总是需要传输层,这个使它比采用直接方法调用的OSGi服务慢几千倍。同时,OSGi组件能够对这些服务的出现和消失做出响应。更多的信息可以从OSGi服务平台发行版本4手册或者PDF下载中找到。需要注意的是每一种服务都是抽象定义的,与不同计算机服务商的实现相独立。

 

框架服务

OSGi框架提供一个权限管理服务,一个包管理服务和一个开始级别服务。这些服务是一个可
  

OSGI

选部分,指示框架的操作。框架服务如下:  权限管理(PermissionAdmin)目前或者将来的bundles的权限通过这种服务进行维护。一旦设置了它们,权限服务立即激活。  包管理(PackageAdmin)bundles同类和资源分享包。bundles的更新可能需要系统重新计算这些依赖。这个包管理服务提供关于系统的实际包分享状态和能够刷新已经共享的包。也就是,取消依赖和重新计算依赖。  启动级别(StartLevel)启动级别是一个bundles集合,它们应该同时运行或者应该在其它已经启动以前被初始化。启动级别服务设置当前的启动级别,为每个bundle排一个启动级别和审核当前的设置。

  URL处理者(URLHandler)Java环境为URL处理者支持一个提供者模型。然而,这是一个单件,不可能在一个象OSGi可能有很多提供者的协作环境上使用它。此服务规范使任何组件提供额外的URL处理者。

 

系统服务

系统服务提供水平功能,它在每个系统是必须的。日志服务,配置管理服务,设备访问
  

OSGI

服务,用户管理服务,IO连接器服务和参数服务都是系统服务的一个方面。  日志服务(LogService)日志信息,警告,调试或者错误信息通过日志服务来处理的。它接受日志实体并分派这些实体到订阅了这个信息的其他bundles。  配置管理服务(ConfigurationAdminService)该服务提供一个设置和获取配置信息的灵活、动态模型。  设备访问服务(DeviceAccessService)设备访问是OSGi为一个新的设备匹配一个驱动,并自动下载一个实现该驱动的bundles的机制。这个可用作即插即用方案。  用户管理服务(UserAdminService)该服务使用一个用于授权和验证目的的用户信息数据库。  IO连接器服务(IOConnectorService)该IO连接器服务实现了CDC/CLDCjavax.microedition.io包,并作为一个服务。该服务允许bundles提供新的可交换协议模式。  参数服务(PreferencesService)该服务提供了参数层级数据库的可访问性,同Windows注册表或者Java参数类相似。  组件运行时服务(ComponentRuntime)服务的动态特性--它们能够在任何时间来去自由--使编写软件变得更难。组建运行时规范通过提供一个基于依赖声明的XML文件来简化处理这些动态方面。  部署管理服务(DeploymentAdmin)OSGi的主要部署格式是bundle,它是一个JAR/ZIP文件。部署管理提供第二种可选格式:部署包。部署包能够将bundles和相应资源联接成可被安装和卸载的单个交付。完整的资源处理器模型允许用户代码扩充资源类型。  事件管理服务(EventAdmin)很多OSGi事件有特定的类型化的接口,使其很难接收和过滤事件。事件服务提供一个泛化的基于主题的事件机制。这个规范包括为所有已存框架和服务事件的映射。  应用程序管理服务(ApplicationAdmin)OSGibundle模型不同于依赖于启动和关闭形式的典型的桌面或者移动电话应用程序模型。该应用程序管理服务提供了传统应用程序模型和它所要求的管理设施。

分享到:
评论

相关推荐

    SpringDM笔记28-Spring And OSGi:Layers of Integration

    标题中的"SpringDM笔记28-Spring And OSGi:Layers of Integration"表明这是一篇关于Spring框架与OSGi(Open Service Gateway Initiative)集成的详细笔记。OSGi是一种模块化系统,它允许Java应用程序以模块化的方式...

    spring osgi相关资源

    Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它...通过学习和掌握Spring DM Server的使用以及Spring OSGi的相关库,开发者可以更好地在OSGi环境中构建和管理Spring应用。

    SpringDM笔记31-Testing with OSGi and SpringDM

    标题 "SpringDM笔记31-Testing with OSGi and SpringDM" 涉及到的是在OSGi环境中使用SpringDM进行测试的相关知识。OSGi(Open Service Gateway Initiative)是一种Java模块化系统,允许动态地发现、加载和卸载服务。...

    spring-osgi.jar及其依赖包

    Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范集成的产物,它使得在OSGi环境中使用Spring变得更加方便。OSGi是一种模块化系统,用于Java应用程序,提供了动态服务发现、版本控制和依赖管理...

    spring-osgi-1.2.1.rar

    - 通过学习这些示例,开发者可以快速掌握Spring OSGi的基本用法和最佳实践。 8. **Spring OSGi的应用场景** - 适用于大型分布式系统,允许按需加载和卸载服务,降低系统复杂性。 - 在企业级应用中,如EJB替代...

    OSGISpring OSGISpring

    10. **实战应用**:学习如何在实际项目中应用OSGISpring,如构建分布式系统、微服务架构等,了解如何解决实际遇到的问题。 为了深入了解OSGI与Spring的整合,阅读"OSGI入门和整合Spring.pdf"文档将是十分有价值的。...

    spring-osgi-1.2.0-rc1-with-dependencies.zip

    通过Spring OSGi,开发者可以利用OSGi的动态性来更灵活地管理应用组件,但同时也要面对OSGi学习曲线陡峭、调试困难等问题。不过,随着Spring OSGi的不断成熟,这些问题正在逐步得到解决。 8. **未来发展** 虽然...

    SpringDM笔记13-OSGi服务注册与引用

    在SpringDM(Spring Dynamic Modules)框架中,OSGi(Open Service Gateway Initiative)服务注册与引用是核心功能之一,它使得模块化系统中的组件能够互相发现并交互。本篇笔记将探讨如何在OSGi环境中注册服务以及...

    学习SpringDM+OSGI的总结

    ### SpringDM与OSGI概述 #### OSGI概念解析 OSGI(Open Service Gateway Initiative),直译为“开放的服务网关初始化”,它是一系列针对Java动态化模块化系统的规范。OSGI不仅指代一个官方联盟,还代表着由该联盟...

    spring-osgi-1.2.0.zip

    4. **Source Code**:如果包含源码,开发者可以查看和学习Spring OSGi的实现细节,以便进行自定义和扩展。 5. **Build Scripts**:Maven或Ant构建脚本,帮助用户构建和打包自己的Spring OSGi应用。 6. **...

    Spring与OSGI整合 计算器例子(转) +附整合代码和spring-osgi核心jar

    通过这种方式,开发者可以学习如何在OSGi环境中管理Spring Bean,以及如何利用OSGi的服务发现机制来构建模块化和可扩展的应用程序。这样的实践对于大型企业级项目尤其有价值,因为它们往往需要处理复杂的服务交互和...

    OSGI整合Spring、Mybatis、Spring MVC实现一个登录应用案例

    在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来实现一个登录应用。这个教程旨在帮助开发者理解如何在OSGI环境中集成这些流行的Java技术,以构建灵活且可扩展的应用程序。 首先,我们需要...

    基于OSGi和Spring开发Web应用教程

    在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...

    OSGi与Spring:Spring DM开发

    ### OSGi与Spring:Spring DM开发环境配置详解 #### 一、引言 随着软件架构的不断发展,模块化和微服务化的趋势日益明显。在Java领域,OSGi(Open Service Gateway Initiative)作为一套成熟的技术标准,为实现模块...

    osgi spring实例

    通过这个实例,开发者不仅可以学习到如何在OSGi环境中运行Spring应用,还能了解到模块化开发的优势,如动态性、隔离性和可升级性。不过,由于Spring DM已不再推荐使用,开发者也应了解如何转换到现代的Spring Boot和...

    基于OSGi和Spring开发Web应用

    ### 基于OSGi和Spring开发Web应用的深度解析 #### OSGi与Spring的融合价值 OSGi,作为企业级应用领域的新兴工业标准,以其面向服务(接口)的核心理念和动态模块部署的能力,成为了现代软件架构设计的重要组成部分...

    基于OSGi和Spring开发Web应用.doc

    "基于OSGi和Spring开发Web应用" OSGi(Open Service Gateway Initiative)是一种面向服务的框架,能够提供动态模块部署和管理的能力。Spring 是一个轻量级的J2EE开发框架,特点是面向接口编程和非侵入式的依赖注入...

    osgi&spring规范

    标题 "OSGi&Spring 规范" 指向的是两个关键的Java技术领域:OSGi(Open Service Gateway Initiative)和Spring框架。OSGi是一种模块化系统和Java服务平台,它提供了一种标准的方式来创建、部署和管理Java应用程序。...

    spring-osgi-1.2.1-with-dependencies

    《Spring OSGi 1.2.1 完整包详解》 在IT行业中,Spring框架以其强大的功能和灵活性在企业级应用开发中占据着重要地位。而Spring OSGi则是Spring框架与OSGi(Open Service Gateway Initiative)规范的结合,它为...

    spring-dm-osgi整合jar包

    标题“spring-dm-osgi整合jar包”和描述“spring-dm整合osgi所需所有jar包”提及的核心知识点是Spring Dynamic Modules(简称Spring DM)与OSGi(Open Service Gateway Initiative)框架的集成。这两个技术在Java...

Global site tag (gtag.js) - Google Analytics