`
flyingbug
  • 浏览: 130275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

<!----><o:p></o:p> 

Introduction <o:p></o:p>

OSGI规范为网络服务定义了一个标准的、面向组件的计算环境。将OSGI服务平台添加到一个网络设备中,可以为其增加在网络的任何地方管理组件的生命周期的能力。软件组件可以从运行中被安装、升级或者移除而不需要中断设备的操作。软件组件可以动态的发现和使用其他库或者应用程序。通过这个平台,软件组件可以作为商品在柜台中出售以及在家里开发。OSGI联盟已经开发出很多标准组件接口,从普通的功能如:HTTP serverconfiguration loggingsecurityuser administrationXML等等很多。一致的插件机制可以使这些组件满足不同买主的不同需求。<o:p></o:p>

软件组件架构致力于一个软件开发中越来越大的问题:大量的基础配置需要开发和维护。标准化的OSGI组件架构显然可以简化这个配置过程。<o:p></o:p>

The Framework<o:p></o:p>

OSGI规范的核心组件使OSGI框架。该框架为应用程序(被成为bundles)提供一个标准化的环境。这个框架被分为以下几个层次:<o:p></o:p>

·  L0: 执行环境 <o:p></o:p>

·  L1: 组件模块 <o:p></o:p>

·  L2: 组件生命周期管理<o:p></o:p>

·  L3: 服务注册 <o:p></o:p>

另外,还有一个安全机制深深的缠绕在所有的层中。<o:p></o:p>

<!----><v:shapetype id="_x0000_t75" stroked="f" filled="f" path=" m@4@5 l@4@11@9@11@9@5 xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0 "></v:f><v:f eqn="sum @0 1 0 "></v:f><v:f eqn="sum 0 0 @1 "></v:f><v:f eqn="prod @2 1 2 "></v:f><v:f eqn="prod @3 21600 pixelWidth "></v:f><v:f eqn="prod @3 21600 pixelHeight "></v:f><v:f eqn="sum @0 0 1 "></v:f><v:f eqn="prod @6 1 2 "></v:f><v:f eqn="prod @7 21600 pixelWidth "></v:f><v:f eqn="sum @8 21600 0 "></v:f><v:f eqn="prod @7 21600 pixelHeight "></v:f><v:f eqn="sum @10 21600 0 "></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>framework  <o:p></o:p>

L0  L0:执行环境就是java环境的规范。Java2配置和profiles,如j2seCDCMIDP等等都是可用的执行环境。OSGI还标准化了一个基于基本profile的执行环境和一个可用于OSGI bundles的最小执行环境的规范。<o:p></o:p>

L1  L1:模块层定义了类加载策略。OSGI框架是一个健壮而严格定义的类加载模型。它基于java但是更加模块化。在java中,通常只有一个单独的classpath包含所有的classresourceOSGI模块层为一个模块添加私有的类并控制模块之间的关联。<o:p></o:p>

L2  L2:生命周期层添加能够动态的安装、启动、停止、升级和卸载的bundlesBundles加载class时依赖于模块层,但也一个API在运行期管理模块。生命周期层引入了通常不属于应用一部分的动态性。广泛的依赖机制过去常用于确认环境的当前操作。<o:p></o:p>

L3  L3层添加了一个服务注册器。服务注册器为bundles提供了一个协作模块用于动态注册。Bundles可以通过传统的class共享来协作,但是class共享与动态安装和卸载的代码不太协调。服务注册器提供了一个全面的模块似的bundles可以共享对象。一些事件被定义来处理服务的加载和卸载。服务只是一些能够代表任何东西的java对象。很多服务的活动一个HTTP服务器,其他服务代表了真实世界中的一个对象,比如:附近的一个蓝牙电话<o:p></o:p>

安全是基于javajava2的安全模块。语言的设计限制了许多可能的结构。比如在病毒中常用的buffer溢出是不可能出现的。语言中的访问控制限制了其他开发者对代码的可见度。OSGI通过允许在标准的java中不可见的私有类来扩展这个模型。Java2的安全模块提供了一个全面的模型来检查代码对资源的访问权限。OSGI也添加了全面的动态权限管理。<o:p></o:p>

Standard Services<o:p></o:p>

在框架的上层,OSGI联盟定义了很多servicesServices通过java接口定义。Bundles可以实现这些接口并注册到service注册器上。这些service的客户端可以通过注册器找到它们,或者当它出现/消失时对它作出反应。<o:p></o:p>

下面的章节描述了OSGi Release 3 services的概况。更多的信息可以在OSGi Release 3 servicesbookPDF中得到。注意每个service都被定义为抽象的,并且独立于不同提供者的实现。<o:p></o:p>

Framework Services<o:p></o:p>

OSGI框架提供一个权限管理服务,一个包管理服务和一个启动级别服务。这些服务是框架的一部分(可选)并指向操作的。<o:p></o:p>

框架服务如下:<o:p></o:p>

•  Permission Admin:通过本服务现在或将来能够操作的bundles。权限在它们被设置时即时生效。 <o:p></o:p>

•  Package Admin BundlesClassesresources共享包。Bundles的升级可能需要系统重新计算依赖关系。这个Package Admin服务提供实际包在系统中的共享情况的信息,并且能够刷新已共享的包。I.e.打破依赖和重新计算依赖。<o:p></o:p>

•  Start Level :启动级别是一组应该一起运行或在其他服务之前初始化的bundles。启动级别服务设置当前启动级别,指定一个bundle的启动级别并且查看当前设置。 <o:p></o:p>

System Services<o:p></o:p>

系统服务提供每个实际系统所需要的底层功能。例如:Log Service, Configuration Admin Service, Device Access Service, User Admin Service, IO Connector ServicePreferences Service<o:p></o:p>

•  Log Service:记录通过log service处理的information, warnings, debug 信息或者error。它获得log实体然后分派这些消息实体到订阅该消息的bundles <o:p></o:p>

•  Configuration Admin Service:该service提供一个灵活和动态的模型来设置和访问配置信息。 <o:p></o:p>

•  Device Access Service:设备访问是一个OSGI机制,当有新的设备添加时,它为新设备匹配驱动,并下载一个bundle来实现该驱动。这对即插即用的情形非常有用。 <o:p></o:p>

•  User Admin Service:这个服务使用一个用户信息的数据库(私有或共有)来达到授权和认证的目的。 <o:p></o:p>

•  IO Connector ServiceIO Connector Service实现CDC/ CLDC javax.microedition.io包作为一个service.这个service允许bundles实现新的、可选的协议。<o:p></o:p>

•  Preferences Service:这个service提供分层的属性数据库的访问。类似于windows的注册表或者java的属性类。<o:p></o:p>

Protocol Services<o:p></o:p>

OSGI联盟还定义了一组服务,每个OSGI服务对应一个外部协议:<o:p></o:p>

•  Http ServiceHttp service是一个servlet运行环境。Bundles能够提供可通过http协议访问的servletsOSGI平台的动态更新工具使http service变成了一个非常吸引人的web server,因为它可以远程动态更新servlet而不需要重启 <o:p></o:p>

•  UPnP Service:统一即插即用(UPnP

分享到:
评论

相关推荐

    OSGi Technology 教程

    OSGi(Open Services Gateway Initiative)技术教程是一套深入学习OSGi服务开发的资源集合,旨在帮助开发者理解并熟练掌握OSGi环境下的应用构建。OSGi是一种模块化系统,它为Java应用程序提供了动态服务发现和依赖...

    OSGi+Technology.rar

    OSGi(Open Services Gateway Initiative)是一种开放的Java模块化系统和服务平台,主要用于创建和管理可升级、可替换的模块化组件。它为Java应用程序提供了一种动态、灵活的部署和管理方式,允许开发者将复杂的应用...

    OSGi in Action

    HIGHLIGHT OSGi in Action is the definitive guide to OSGi, the hottest technology available for creating modular enterprise Java applications. DESCRIPTION What is OSGi? Simply put, OSGi is a ...

    osgi.enterprise-6.0.0

    to tailor and extend the OSGi framework to address information technology software infrastructure use cases found in enterprise scenarios. The EEG technical areas of concern include: • Scaling, ...

    JavaOne2009大会资料-Core Technology: Java EE(1)

    2. **Google开源技术与Java EE的结合**:TS-4062-Building Enterprise Java Technology-Based Web Apps with Google Open-Source Technology.pdf探讨了如何使用Google的开源工具和技术(如App Engine)来构建基于...

    Spring Recipes A Problem-Solution Approach [英文原版]

    OSGi (a promising technology for modular architectures) has been a big part of the SpringSource strategy here. Additionally, the Spring framework runs on Google App Engine. With the introduction of ...

    Eclipse 插件开发指南

    IBM对Eclipse的持续投资和推动,特别是将原本内部的OTI(Object Technology International)资源投入Eclipse,进一步巩固了Eclipse在市场上的领先地位。 **1.1.2 Eclipse的核心架构与技术特点** Eclipse设计的核心...

    eclipse4 2安装插件 精选

    在"Web, XML, Java EE and OSGi Enterprise Development"下勾选所需的组件,如不需要PHP或OSGI,可以取消选中。 - 完成勾选后,按照提示点击"Next",然后同意许可协议,最后点击"Finish"完成安装。 2. **安装m2e...

    GreetCTK_CTK插件框架_consonant7x3_

    CTK(Component Technology Kit)是一种用于构建可插拔软件系统的框架,它允许开发者将应用程序划分为独立的组件或插件,这些插件可以按需加载和卸载,从而提供了高度的灵活性和模块化。在“GreetCTK_CTK插件框架_...

    软件复用与软件构件技术

    在信息技术领域,软件复用(Software Reuse)和软件构件技术(Software Component Technology)是两个至关重要的概念,它们极大地提升了软件开发的效率和质量,降低了成本,并推动了软件工程的发展。软件复用的核心...

    Eclipse中文语言包

    6. BabelLanguagePack-technology.dltk-zh_4.2.0.v20121120043402.zip:Data Language Toolkit (DLTK) 的汉化包,DLTK支持多种编程语言的开发。 7. BabelLanguagePack-rt.equinox-zh_4.2.0.v20121120043402.zip:...

    eclipse相关插件安装步骤

    在出现的列表中,选择"Web, XML, Java EE and OSGi Enterprise Development",根据需求取消不需要的选项,然后按照提示逐步完成安装。 2. **Maven插件(m2e)安装**: 为了管理Maven项目,你需要安装m2e插件。同样地...

Global site tag (gtag.js) - Google Analytics