OSGi规范自我总结 (5000字).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OSGi规范自我总结 (5000字)

PAGE23 / NUMPAGES23 OSGi规范自我总结 (5000字) OSGI框架从功能上分为下面几个层次: ? 安全层 Security Layer ? 模块层 Module Layer ? 生命周期层 Life Cycle Layer ? 服务接口层 Service Layer 安全层: OSGi安全层是OSGi服务框架的一个可选的层。它基于Java 2 安全体系结构,提供了对精密控制环境下的应用部署和管理的基础架构。 OSGi服务平台采用两种方式对代码进行校验: ? 位置验证 ? 签名验证 模块层: Module Layer定义了在OSGI框架中是怎么去按照Module的思想去开发的。 框架定义了模型化单元,称之为一个 bundle。一个bundle由java的类和其他资源组成,可以为终端用户提供功能。通过良好定义的方式,Bundle 可以和导入(importer)及导出 (exporter) Bundle之间共享Java包。 在OSGi服务框架中,bundle是仅有的需要部署的Java应用实体。 Bundle以JAR文件的方式进行部署。 一个bundle是一个如下的JAR文件: ? 拥有提供服务所必须的资源。这些资源可以是 java的class文件,或者是其他的数据如HTML文件,帮助文件,图标文件等。一个bundle JAR文件也可以嵌入其他JAR文件作为资源,但是不支持多层嵌套的JAR。 ? 有一个manifest文件描述JAR文件内容和bundle的信息。该文件处于JAR的头部,提供框架需要的安装和激活bundle所需的信息。例如,它对其他资源如 JAR文件的依赖这种状态信息必须在bundle运行之前加载。 ? 可以在OSGI-OPT文件夹提供可选的文档信息,该文件夹可以位于 JAR文件根目录或者它的子文件夹中。OSGI-OPT文件夹中的内容都是可选的。例如,可以在其中保存 bundle的源代码。管理系统可以删除该文件夹内容,以便于节约OSGi服务平台的存储空间。当一个bundle开始运行,通过OSGi服务平台,它开始对安装在平台内的其他bundle提供功能和服务。 Bundle 的描述信息在一个 manifest 文件中,在 JAR 文件中的 META-INF 目录下的MANIFEST.MF文件。框架在manifest文件头中定义了Export-Package和Bundle-Classpath这样的OSGi manifest 头,bundle的开发人员可以使用它们提供 bundle的描述信息。 类加载机制: 许多bundle可以共享虚拟机(VM)。在VM内部,bundle可以相互隐藏包和类,也可以和其他bundle共享包。 隔离和共享包关键是由java的类加载器来实现,类加载器通过仔细定义的规则从bundle空间的一个子集中加载类。每一个bundle只会有一个单独的类加载器,类加载器形 成了一个类加载的代理网络结构,如下所示: 类加载器可以加载类和资源,加载途径有: ? 启动类路径:启动类路径中有一个java.*的包以及它实现的包。 ? 框架类路径:在框架中通常有一个单独的类加载器,加载框架实现的类和关键的服务接口类。 ? Bundle类空间:bundle的类空间由和bundle相关的JAR文件组成,以及其他和bundle紧密相关的JAR文件,比如bundle片断类空间是指一个给定的bundle类加载器可以访问到的所有的类。因此,一个指定bundle的类空间来自: ? 父类加载器(通常是来自启动类路径的java.*包中的) ? 导入的包 ? 必须的bundle ? Bundle类路径(私有包) ? 附加的片断 类空间必须是一致的,也就是说不能存在相同全名的两个类(为了防止类声明错误)。 但是,在OSGi框架中,不同的类空间可以存在同名的类。在模块层,支持不同版本的类加载到相同的虚拟机中。 在使用一个 bundle之前,框架必须对共享的包之间的约束关系进行解析。解析过程就是确定导入包如何连接到导出包。 bundle的 package共享机制 在开发中可以直接通过import-package方式来引用所需要的package。通过 export-package方式来导出对外暴露才包。 也可以在import-package中或者export-package中设置其

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档