OSGI笔记(一)

来源:互联网 发布:获取百度指数的源数据 编辑:程序博客网 时间:2024/05/16 13:00

1、Core Framework

    Core Framework是OSGI规范中的核心部分,它为基于OSGI的应用系统提供了标准的运行环境,从本质上保证了基于OSGI规范化的开发和部署动态性的系统。

    OSGI框架由四层组成:L0:运行环境

                        L1:模块

                        L2:生命周期管理

                        L3:服务注册

    L0运行环境是指标准的Java环境。只要具备Java2的构造和轮廓的都是被认可的运行环境。OSGI同时也定义了一个可运行的Bundles的最小环境的标准。

    L1模块层定义了所采用的类加载器机制。OSGI是一个强大、严格、规范的类加载模型,基于Java但增加了模块化。在Java中,通常都是有一个Classloader来加载所有的类和资源文件。在OSGI模块层中则为模块提供各自的ClassLoader,同时为模块的关联提供控制。

    L2生命周期管理层则为Bundles动态安装、启动、停止、更新和卸载提供了支持。基于L1提供的模块类加载机制的基础上,增加了一个对于Bundle的管理的API。

    L3增加了服务注册。服务注册为Bundles提供了一个动态的协作模型。本来Bundles可通过传统的class共享方式来实现协作,但在动态的安装和卸载代码的环境下这种方法是不适用的。服务注册为Bundles间共享Objects提供了一种可用的模型,OSGI提供了一堆的事件来通知服务的使用者关于服务的注册和卸载,服务其实就是简单的Java objects。

    在OSGI Framework中还包括一个安全层次(Security Layer),OSGI的安全层次基于Java的安全机制进行了扩展,增加了一些新的约束以及填补了Java安全机制中的遗漏。


  1.1Module Layer

     在OSGI规范中,将Module命名为Bundle,所以在OSGI框架中采用Bundle的方式来组织和部署系统。Bundle和普通Java工程唯一的不同就是在MANIFEST.MF中编写Bundle的元数据信息。其中元数据信息描述为:

属性属性描述Bundle-ActivatorBundle的Activator类名。示例:Bundle-Activator:org.riawork.demo.ActivatorBundle-CategoryBundle的分类属性描述。示例:Bundle-Category:Opendoc,OSGIBundle-ClasspathBundle的Classpath。示例:Bundle-Classpath:/bin,/lib/log4j.jarBundle-ContactAddress提供Bundle的开发商的联系地址。示例:Bundle-ContactAddress:ShanghaiBundle-Copyright Bundle的版权Bundle-DescriptionBundle的描述信息。Bundle-DocURLBundle的文档URL地址Bundle-LocalizationBundle的国际化文件Bundle-ManifestVersion定义Bundle所遵循的规范的版本,OSGI R3对应的版本值为1,R4对应的值为2Bundle-NameBundle的有意义的名称Bundle-NativeCodeBundle所引用的NativaCode地址Bundle-RequiredExecutionEnvironmentBundle 运行所需要的环境Bundle-SymbolicNameBundle 的唯一标识名,可采用类似 java package 名机制来保证唯一性。Bundle-UpdateLocationBundle 更新时连接的 URL 地址DynamicImport-PackageBundle 动态引用的 package。Export-PackageBundle 对外暴露的 packageFragment-HostFragment 类型 Bundle 所属的 Bundle 名Import-PackageBundle 引用的 package。Require-BundleBundle 所需要引用的其他的 BundleBundle-VendorBundle 的开发商Bundle-VersionBundle 的版本。
对于之上的Bundle的元数据属性的值,都支持增加附加过滤属性的方式。如Import-Package可以使这样的格式:

 Import-Package:org.riawork.opendoc.osig;version="[1.0,2.0)";resolution:=mandatory,org.riawork.opendoc.riawork;Company=RIAWork



0 0
原创粉丝点击