您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Eclipse-OSGi模块解析模型源码分析
OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司尤埃与产品简介西安尤埃信息技术有限公司()成立于2008年5月份,专注于尤埃开放服务平台和尤埃SaaS引擎云计算产品开发。尤埃开放服务平台(XAUIOpenServicePlatform,UIOSP)是一个移植了OSGi规范的动态插件化与模块化平台,支持插件化与模块化、SOA和模块扩展。尤埃SaaS引擎(XAUISaaSEngine,XSE)是一个SaaS应用商店开放平台。该平台是面向SaaS运营商、SaaS提供商和SaaS消费者三个角色的PaaS云计算平台,其模式为“SaaS运营商负责平台运营,SaaS提供商利用平台提供的开发工具包基于VS2008SP1开发SaaS应用并上传,SaaS消费者在应用商店挑选、购买并使用SaaS应用”。该平台由应用商店网站、应用开发工具包和应用虚拟运行环境构成。1ResolvingModelExampleA)IconsIREHIREHIREHIREHIREHB)WiringModelOSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司(Bundle,Export)VersionConstraint(Host,Import,Require)AddSupplierRemoveSupplierGetSupplierGetPossibleSupplierIRHC)StateKIREHIREHBHIRECIREHAIREHFIREHEIREHDIREHHIREHGOSGi提供对系统状态的持久化。2ResolvingProcessinasimplescenario1)安装BundleH,系统状态Resolved=false,当进行解析后,所有Bundle的状态为{H:0},因为H的Import和Require不能被满足,此时系统状态进入Resolved=true。2)安装BundleK,系统状态Resolved=false,当进行解析后,所有Bundle的状态为{H:0,K:1},因为H的Import不能被满足,但K能够被解析,此时系统状态进入Resolved=true。3)同2)。4)卸载了BundleG…。OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司:{H:0}State1Bundles:{H:0,K:1}State2Bundles:{H:1,K:1,G:1}State2Bundles:{H:0,K:1}State2Bundles:{K:1}对于整个系统状态,Bundle的安装、卸载、解析和反解析将引起其它Bundle状态的变化,因此也将影响到系统状态。3Constraintandresolverlayercodes3.1osgi.eclipse.osgi.service.resolver该层定义的了约束和解析描述、系统状态与解析器接口。3.1.1BaseDescription表示Bundle一个不需要被解析描述信息,比如导出描述和Bundle描述。packageorg.eclipse.osgi.service.resolver;importorg.osgi.framework.Version;publicinterfaceBaseDescription{//名称。publicStringgetName();//版本。OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司();//该Description拥有Bundle。publicBundleDescriptiongetSupplier();}3.1.2ExportPackageDescription表示一个Export描述。packageorg.eclipse.osgi.service.resolver;importjava.util.Map;publicinterfaceExportPackageDescriptionextendsBaseDescription{//标识是否Re-export。publicbooleanisRoot();publicMapgetAttributes();publicMapgetDirectives();publicObjectgetDirective(Stringkey);//导出的Bundle。publicBundleDescriptiongetExporter();}3.1.3BundleDescription表示一个Bundle的描述信息,包括:约束和描述。一个Bundle的约束有:Host约束、Require约束、Import约束等;描述有:Export描述和Bundle描述。packageorg.eclipse.osgi.service.resolver;publicinterfaceBundleDescriptionextendsBaseDescription{publicStringgetSymbolicName();publicStringgetLocation();//所有Require约束规范。publicBundleSpecification[]getRequiredBundles();OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司所有Export描述。publicExportPackageDescription[]getExportPackages();//所有Import约束规范。publicImportPackageSpecification[]getImportPackages();publicGenericSpecification[]getGenericRequires();publicGenericDescription[]getGenericCapabilities();//是否有动态Import。publicbooleanhasDynamicImports();//返回这个Bundle被解析器采用的Export,没有解析或没有共享包的话,返回空。publicExportPackageDescription[]getSelectedExports();//被解析的Require描述。publicBundleDescription[]getResolvedRequires();//被解析的Import描述。publicExportPackageDescription[]getResolvedImports();//是否已经解析。publicbooleanisResolved();//保存该Bundle的State。publicStategetContainingState();publicStringtoString();//解析的Host。publicHostSpecificationgetHost();publiclonggetBundleId();//所有片段描述。publicBundleDescription[]getFragments();publicbooleanisSingleton();//是否正在删除。publicbooleanisRemovalPending();//所有依赖的Bundle。publicBundleDescription[]getDependents();publicObjectgetUserObject();OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司(ObjectuserObject);publicStringgetPlatformFilter();//是否已经附加了Fragments。publicbooleanattachFragments();//是否允许动态附加片段。publicbooleandynamicFragments();//要求的执行环境。publicString[]getExecutionEnvironments();}3.1.4VersionConstraint表示一个约束的描述信息。packageorg.eclipse.osgi.service.resolver;publicinterfaceVersionConstraintextendsCloneable{//约束的名称。比如,Require约束的名称就是所需要的Bundle特征名。publicStringgetName();//约束指定的版本范围。publicVersionRangegetVersionRange();//声明该约束的Bundle。publicBundleDescriptiongetBundle();//是否解析。publicbooleanisResolved();//判断一个描述是否满足该约束。publicbooleanisSatisfiedBy(BaseDescriptionsupplier);//返回满足约束的描述。publicBaseDescriptiongetSupplier();}3.1.5BundleSpecification表示一个Require-Bundle约束规格。packageorg.eclipse.osgi.service.resolver;OSGi解析模型源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司{publicbooleanisExported();//是否为Optional。publicbooleanisOptional();}3.1.6HostSpecification表示一个Host约束规格。packageorg.eclipse.osgi.service.resolver;publicinterfaceHostSpecificationextendsVersionConstraint{//满足约束的Hosts。publicBundleDescription[]getHosts();//是否有多个Host。publicbooleanisMultiHost();}3.1.7ImportPackageSpecification表示一个Import约束规格。packageorg.eclipse.osgi.service.resolver;importjava.util.Map;publicinterfaceImportPackageSpecificationextendsVersionConstraint{publicstaticfinalStringRESOLUTION_STATIC=static;publicstaticfinalStringRESOLUTION_OPTIONAL=optional;publicstaticfinalStringRESOLUTION_D
本文标题:Eclipse-OSGi模块解析模型源码分析
链接地址:https://www.777doc.com/doc-6470032 .html