- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OSGi规范自我总结 (4000字)
PAGE22 / NUMPAGES22 OSGi规范自我总结 (4000字) OSGI框架从功能上分为下面几个层次: ?安全层SecurityLayer ?模块层ModuleLayer ?生命周期层LifeCycleLayer ?服务接口层ServiceLayer 安全层: OSGi安全层是OSGi服务框架的一个可选的层。它基于Java2安全体系结构,提供了对精密控制环境下的应用部署和管理的基础架构。 OSGi服务平台采用两种方式对代码进行校验: ?位置验证 ?签名验证 模块层: ModuleLayer定义了在OSGI框架中是怎么去按照Module的思想去开发的。 框架定义了模型化单元,称之为一个bundle。一个bundle由java的类和其他资源组成,可以为终端用户提供功能。通过良好定义的方式,Bundle可以和导入(importer)及导出(exporter)Bundle之间共享Java包。 在OSGi服务框架中,bundle是仅有的需要部署的Java应用实体。Bundle以JAR文件的方式进行部署。 一个bundle是一个如下的JAR文件: ?拥有提供服务所必须的资源。这些资源可以是java的class文件,或者是其他的数据如HTML文件,帮助文件,图标文件等。一个bundleJAR文件也可以嵌入其他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这样的OSGimanifest头,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中设置其过滤属性,以更加准确的获取或导出所需要的package。 可以通过版本过滤、元数据信息过滤、自定义属性过滤、必须的属性过滤来实现过滤获取或导出package。 生命周期层: bundle可以处于以下状态中的一种: ?INSTALLED—成功安装bundle ?RESOLVED—所有bundle需要的Java类都准备好了。这个状态标志着bundle已经是启动就绪或者是已经停止。 ?STARTING—正在启动bundle。调用了bundle激
有哪些信誉好的足球投注网站
文档评论(0)