- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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中设置其
您可能关注的文档
最近下载
- 2025年呼和浩特铁路局集团招聘(406人)笔试备考题库及答案解析.docx VIP
- 05X101-2地下通信线缆敷设标准图集.pdf VIP
- 倍福模块配置方式教程文件.pdf VIP
- 过程能力CPK分析表.xls VIP
- 2025年呼和浩特铁路局集团招聘(406人)笔试备考试题及答案解析.docx VIP
- 202507基孔肯雅热&登革热培训试题.docx VIP
- 夏直播花生高产栽培技术解析:理论与实际应用.docx VIP
- 压水堆核电厂核岛厂房用孔洞封堵材料和嵌缝材料技术要求,NB_T20341-2015.pdf VIP
- 肉牛生产系列讲座肉牛生产系列讲座.doc VIP
- 高层建筑竖井大型风管安装施工技术.docx VIP
文档评论(0)