您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Eclipse-OSGi内核源码分析
EclipseOSGi内核源码分析陈贞宝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应用”。该平台由应用商店网站、应用开发工具包和应用虚拟运行环境构成。1osgi.framework1.1Bundle相关1.1.1BundleBundle接口表示在框架中安装的一个Bundle。每一个Bundle有一个由框架设置的唯一标识。它提供以下功能:(1)Bundle操作,启动、停止、更新、卸载操作及Bundle状态。(2)Bundle信息,头信息、ID、Location、特征名称和上次更新时间。(3)类和资源加载,获取服务引用。(4)Bundle上下文。packageorg.osgi.framework;EclipseOSGi内核源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司{//已卸载状态。publicstaticfinalintUNINSTALLED=0x00000001;//已安装状态。publicstaticfinalintINSTALLED=0x00000002;//已解析状态。publicstaticfinalintRESOLVED=0x00000004;//正在启动状态。publicstaticfinalintSTARTING=0x00000008;//正在停止状态。publicstaticfinalintSTOPPING=0x00000010;//激活状态。publicstaticfinalintACTIVE=0x00000020;//Bundle的autostart设置影响启动策略,这个持久设置可有://(1)Stopped——Bundle不可以被启动;//(2)Startedwitheageractivation——启动后立即激活;//(3)Startedwithdeclaredactivation——启动后,第一个类加载时激活。//这个值用于start函数,表示启动后立即激活,但不更改autostart设置。publicstaticfinalintSTART_TRANSIENT=0x00000001;//这个值用于start函数,表示使用Bundle-ActivationPolicy来启动,并设置//autostart为Startedwithdeclaredactivation。publicstaticfinalintSTART_ACTIVATION_POLICY=0x00000002;//用于stop函数,表示停止后不更改autostart设置。publicstaticfinalintSTOP_TRANSIENT=0x00000001;EclipseOSGi内核源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司返回Bundle当前状态。publicintgetState();//使用参数启动Bundle。这个参数可以是://(1)0——启动后立即激活,并设置autostart为Startedwitheageractivation。//(2)START_TRANSIENT——同0,但不更改autostart。//(3)START_ACTIVATION_POLICY——启动后根据Bundle-ActivationPolicy来//激活Bundle,并更改autostart为Startedwithdeclaredactivation。//(4)START_ACTIVATION_POLICY|START_TRANSIENT——同(3),但不更改//autostart设置。//如果Bundle状态时UNINSTALLED,则抛出IllegalStateException;//如果框架实现了可选的启动级别且当前启动级别小于Bundle启动级别,//若设置START_TRANSIENT,则抛出BundleException。publicvoidstart(intoptions)throwsBundleException;//相当于start(0)。publicvoidstart()throwsBundleException;//停止一个Bundle,参数options可为://(1)0——停止并设置autostart为stopped。//(2)STOP_TRANSIENT——停止,不更改autostart。publicvoidstop(intoptions)throwsBundleException;//相当于stop(0)。publicvoidstop()throwsBundleException;//更新Bundle。publicvoidupdate()throwsBundleException;publicvoidupdate(InputStreamin)throwsBundleException;//卸载一个Bundle。publicvoiduninstall()throwsBundleException;//获取这个Bundle的头信息。publicDictionarygetHeaders();//BundleID。publiclonggetBundleId();EclipseOSGi内核源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司安装位置。publicStringgetLocation();//获取这个Bundle注册的服务。publicServiceReference[]getRegisteredServices();//获取这个Bundle使用的服务。publicServiceReference[]getServicesInUse();publicbooleanhasPermission(Objectpermission);//获取资源。publicURLgetResource(Stringname);//获取本地化的头信息。publicDictionarygetHeaders(Stringlocale);//特征名。publicStringgetSymbolicName();//装载类。publicClassloadClass(Stringname)throwsClassNotFoundException;//获取所有资源。publicEnumerationgetResources(Stringname)throwsIOException;publicEnumerationgetEntryPaths(Stringpath);publicURLgetEntry(Stringpath);//上次更新时间。publiclonggetLastModified();//查找资源。publicEnumerationfindEntries(Stringpath,StringfilePattern,booleanrecurse);//获取上下文。publicBundleContextgetBundleContext();}EclipseOSGi内核源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司自定义启动和停止Bundle。当Bundle在Resolved-Active之间转换时,调用start和stop。packageorg.osgi.framework;publicinterfaceBundleActivator{publicvoidstart(BundleContextcontext)throwsException;publicvoidstop(BundleContextcontext)throwsException;}1.1.3BundleContextBundleContext用于使关联Bundle与系统的其它功能进行交互。它提供的功能包括:(1)获取属性。(2)检索和安装Bundle。(3)注册和获取服务引用。(4)服务、Bundle和框架的事件与监听器。(5)过滤器和持久存储。packageorg.osgi.framework;importjava.io.File;importjava.io.InputStream;importjava.util.Dictionary;publicinterfaceBundleContext{//系统属性。publicStringgetProperty(Stringkey);//返回关联的Bundle。EclipseOSGi内核源码分析陈贞宝xashine.zhenbao@gmail.com西安尤埃信息技术有限公司();//安装一个Bundle。publicBundleinstallBundle(Stringlocation)throwsBundleException;publicBundleinstallBundle(Stringlocation,InputStreaminput)throwsBundleException;//获取指定ID的Bundle。publicBundlegetBundle(longid);//获取所有安装的Bundle。publicBundle[]getBundles();//服务监听器。publicvoidaddServiceListener(ServiceListenerlistener,Stringfilter)throwsInvalidSyntaxException;publicvoidaddServiceListener(ServiceListenerlistener);publicvoidremoveServiceListener(ServiceListenerlistener);//Bundle监听器。publicvoidaddBundleListener(BundleListenerlistener);publicvoidremoveBundleListener(BundleListenerlistener);//Framework监听器。publicvoidaddFrameworkListener(FrameworkListenerlistener);publicvoidremo
本文标题:Eclipse-OSGi内核源码分析
链接地址:https://www.777doc.com/doc-6470031 .html