OSGi规范自我总结

OSGi规范自我总结

ID:36348239

大小:145.50 KB

页数:12页

时间:2019-05-09

OSGi规范自我总结_第1页
OSGi规范自我总结_第2页
OSGi规范自我总结_第3页
OSGi规范自我总结_第4页
OSGi规范自我总结_第5页
资源描述:

《OSGi规范自我总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、OSGI框架从功能上分为下面几个层次:l安全层SecurityLayerl模块层ModuleLayerl生命周期层LifeCycleLayerl服务接口层ServiceLayer安全层:OSGi安全层是OSGi服务框架的一个可选的层。它基于Java2安全体系结构,提供了对精密控制环境下的应用部署和管理的基础架构。OSGi服务平台采用两种方式对代码进行校验:l位置验证l签名验证模块层:ModuleLayer定义了在OSGI框架中是怎么去按照Module的思想去开发的。框架定义了模型化单元,称之为一个bundle。一个bundle由java的类和其他资源组成,可以为终端用户提供功能。通过良

2、好定义的方式,Bundle可以和导入(importer)及导出(exporter)Bundle之间共享Java包。在OSGi服务框架中,bundle是仅有的需要部署的Java应用实体。Bundle以JAR文件的方式进行部署。 一个bundle是一个如下的JAR文件:l拥有提供服务所必须的资源。这些资源可以是java的class文件,或者是其他的数据如HTML文件,帮助文件,图标文件等。一个bundleJAR文件也可以嵌入其他JAR文件作为资源,但是不支持多层嵌套的JAR。l有一个manifest文件描述JAR文件内容和bundle的信息。该文件处于JAR的头部,提供框架需要的安装和激活

3、bundle所需的信息。例如,它对其他资源如JAR文件的依赖这种状态信息必须在bundle运行之前加载。l可以在OSGI-OPT文件夹提供可选的文档信息,该文件夹可以位于JAR文件根目录或者它的子文件夹中。OSGI-OPT文件夹中的内容都是可选的。例如,可以在其中保存bundle的源代码。管理系统可以删除该文件夹内容,以便于节约OSGi服务平台的存储空间。当一个bundle开始运行,通过OSGi服务平台,它开始对安装在平台内的其他bundle提供功能和服务。 Bundle的描述信息在一个manifest文件中,在JAR文件中的META-INF目录下的MANIFEST.MF文件。框架在m

4、anifest文件头中定义了Export-Package和Bundle-Classpath这样的OSGimanifest头,bundle的开发人员可以使用它们提供bundle的描述信息。类加载机制:许多bundle可以共享虚拟机(VM)。在VM内部,bundle可以相互隐藏包和类,也可以和其他bundle共享包。隔离和共享包关键是由java的类加载器来实现,类加载器通过仔细定义的规则从bundle空间的一个子集中加载类。每一个bundle只会有一个单独的类加载器,类加载器形成了一个类加载的代理网络结构,如下所示: 类加载器可以加载类和资源,加载途径有:l启动类路径:启动类路径中有一个j

5、ava.*的包以及它实现的包。l框架类路径:在框架中通常有一个单独的类加载器,加载框架实现的类和关键的服务接口类。lBundle类空间:bundle的类空间由和bundle相关的JAR文件组成,以及其他和bundle紧密相关的JAR文件,比如bundle片断类空间是指一个给定的bundle类加载器可以访问到的所有的类。因此,一个指定bundle的类空间来自:l父类加载器(通常是来自启动类路径的java.*包中的)l导入的包l必须的bundlelBundle类路径(私有包)l附加的片断类空间必须是一致的,也就是说不能存在相同全名的两个类(为了防止类声明错误)。但是,在OSGi框架中,不同

6、的类空间可以存在同名的类。在模块层,支持不同版本的类加载到相同的虚拟机中。在使用一个bundle之前,框架必须对共享的包之间的约束关系进行解析。解析过程就是确定导入包如何连接到导出包。 bundle的package共享机制在开发中可以直接通过import-package方式来引用所需要的package。通过export-package方式来导出对外暴露才包。也可以在import-package中或者export-package中设置其过滤属性,以更加准确的获取或导出所需要的package。可以通过版本过滤、元数据信息过滤、自定义属性过滤、必须的属性过滤来实现过滤获取或导出package

7、。生命周期层:bundle可以处于以下状态中的一种:lINSTALLED—成功安装bundlelRESOLVED—所有bundle需要的Java类都准备好了。这个状态标志着bundle已经是启动就绪或者是已经停止。lSTARTING—正在启动bundle。调用了bundle激活器的start方法,而且还没有从方法中返回。lACTIVE—bundle已经启动完毕,正在运行中。lSTOPPING—正在停止bundle。调用了bundle激活器的st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。