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
- OSGI笔记(一)
- OSGI笔记(一)HelloWorld
- OSGI笔记(一)HelloWorld
- OSGI笔记(一)HelloWorld
- OSGI笔记(一)HelloWorld
- OSGI学习笔记一(事件传递)
- OSGI学习笔记一
- OSGI笔记(一)
- osgi 学习笔记一
- OSGI学习(一)
- osgi入门(一)
- osgi介绍(一)什么是osgi
- OSGI笔记(一)之Hello World应用程序
- OSGi技术简介(一)
- OSGi入门(一):基础知识
- OSGI基础概括(一)
- OSGI学习系列(一)搭建OSGI环境(Equinox)
- osgi 学习系列(一)搭建osgi platform环境
- 上传路径的问题
- projecteuler---->problem:1
- qt 添加资源文件及使用qss
- 黑马程序员---IO流
- Java学习笔记_27_Java IO流
- OSGI笔记(一)
- Gabor滤波简介和实现(Matlab,OpenCV)
- C语言基础概况笔记
- 判断一个服务是否处于开启状态
- php 会员模块 如果用户未登录,强行跳转至登录页
- 51单片机(HC6800—EM3 V2.2)数码管操作——静态显示
- 要全面啊~
- HODJ Big Number(java 阶乘)
- /tmp/mathworks_15227/java/jre/glnxa64/jre/bin/java: Permission denied