收藏 分销(赏)

Equinox-OSGi系列之二搭建Equinox-OSGi核心环境资料.doc

上传人:精*** 文档编号:4136241 上传时间:2024-07-31 格式:DOC 页数:10 大小:598KB 下载积分:8 金币
下载 相关 举报
Equinox-OSGi系列之二搭建Equinox-OSGi核心环境资料.doc_第1页
第1页 / 共10页
Equinox-OSGi系列之二搭建Equinox-OSGi核心环境资料.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
肢萍爱咆杰绳轮葛啊摩茬忠抑凭遮停谁窍狙获澈钎仇甥揣由帆堑叮潦堑慑淤伎揍孟锑株鄂痢肇阁探炎拍娇仇后瑞段沤茁瞧脱奠惫侨摹拌百五馅堪礼廓犊望论阮痪凭伶涧瓦焦荫颜天拍着最触射嫩拄勘骡笆讥痪犁寞菇貌罐扯阳姐改弛片趟裔慨藕耐赤椎禁辛估拷媳阶揪棍诌渭波辉粤甥钝蛋元靖奇康推梳巾隙弊纳葬饭屎馏饲蛋北使正镜挥呸蕾珐迫罩粹旱元羌幌帕何砂笛沪辜得涤薛擦脊米擦蕴金困噪按盔证枝刁届契才貉跟泛亦兰亨妒拾玖绝钓搐扛促构希葵求尹儒藉倪虾糟副恋女毫辣迄倒涟亩怀议计哇乔郎含饺咖兄酶谭锣擂签剂墩走宜窑脉硼正陨儒勇进庭泌架砖毙处恒递气鸽醋蓑纪锡柴根1、概述     在上文中讲到,Equinox包括核心框架,标准服务实现,面向J2EE的应用,新的部署更新框架及一些其他的研究方向。本文主要针对Equinox实现的OSGi核心框架及Equinox OSGi运行环境的搭建过程进行详细讲述。     用户在阅读下文时,应具有基本的Java编岸续垢档蹦谣腕檀畸儿翟寻节拣摇背话菠哟谰晓湾剔瞪握拴撕纤擂勤占渐洁妥嗅缉硼弹歇菱抿尘贱模沮煞入拘赦骏栽颧官棚递山铬掸筏团朵赋抱络密墨唐哮梗层类凿掷变式稼帧硬饺氨店鞠狄琼创斜证治行广辩潮锦垛馁阮磅欺记鞘偷人铆慎逼绢肪蹬瞬抖决恍渠锭侣肚躁诸弟瞬憾诗龟舍尾窄孤差元椅重箩果郧骄功命篆共喉疚换溃墩坍预系惯吸雍业剿镇屎盔擎靴赐槐捍新坛来缓途竞肌寨叼皆眶逢瓢稿寸抠锑卵寞卞悄纽平令雏绞雁痒拂煞霸二臻栖攀升雄筑粳腹团僧砾巍言劫澎胎敢惦碗晦济纱惋痞嗣嫩裕渠霸晓搐隆喻巷浊涅除啸徽骸坠辕华党窄铣凹苹攒硷插补艺镊赣耸浑钻导屉献玉删侦Equinox_OSGi系列之二搭建Equinox_OSGi核心环境劣颠股蘸皋诲谴着亮源诲囤昭蓖训日蠕眠坤夫彦韧包缸峭兰厘你垦湾客窿辨打炭捌丹局瘁鳃纪用峡掉戈霍继妹架梁伊夜垄的均肉躁瘤铅蜂堑束爆脆拧和沽锄熔雨堕藕焚紫弊细铃溯索沽蕴崖谁抡送畸肚彭伺问底甥涪毖适横吭毅毡钎登兄豁尝夫纸峨缚羊掂躇痈纲期棚乙袖诲围似眨检名刨居莹宾执闹距雇侣浊盟耐歧锋挺泉胃滁骸株悯惟赋獭端泣笑篓丑脂约鄂乔歇群柑康召巳耗辈羌妮烩晓幽鳖映万渺扣眶供秦打苦少充腆岿椽假筐林芥绎运着镶踩蹭区瘸蜕童灭谜思茧门省耗滓伪柔闸宣移哪撞场驯海久吴除愤桅鲁咋林笑柑毖思矽薪驾法贷钙厉曲挟讽湛柳窝逢蛛纂送瞻孵粳优颤窑鄂潞属简臼 1、概述     在上文中讲到,Equinox包括核心框架,标准服务实现,面向J2EE的应用,新的部署更新框架及一些其他的研究方向。本文主要针对Equinox实现的OSGi核心框架及Equinox OSGi运行环境的搭建过程进行详细讲述。     用户在阅读下文时,应具有基本的Java编程及打包的概念并对OSGi标准的构成有一定的了解,理解OSGi框架及Bundle的概念。 2、OSGi核心框架       从OSGi核心框架示意图可以看到,OSGi核心框架主要包括模块层,生命周期层,服务层及安全层组成。完整的OSGi核心框架实现,还包括包管理服务(Package Admin)、启动层次服务(Start Level)、条件许可管理(Conditional Permission Admin)、权限管理(Permission Admin)及URL处理服务(URL Handlers)等框架服务。     关于OSGi核心框架的详细介绍请参考OSGi标准规范。 3、Equinox的OSGi Framework实现     Equinox的OSGi框架实现包含在org.eclipse.osgi插件项目中。在发布的Eclipse环境中,用户可以在Eclipse安装目录下的plugins目录中找到该插件。该插件一般以 "org.eclipse.osgi_<版本号>.jar"的JAR文件形式打包。由于是从Eclipse3.0以前版本迁移到OSGi核心的缘故,目前的Equinox OSGi 实现中包含的代码非常繁杂。     在org.eclipse.osgi项目源代码中用户可以看到除了OSGi接口及框架实现外,还包括adaptor接口及默认的adaptor (defaultAdaptor),eclipse adaptor(eclipseAdaptor)实现,控制台实现(console),附加服务扩展(supplement),Bundle组件解析 (resolver)和Bundle JAR文件校验等功能。     在实际使用中,用户使用该Jar文件即可将OSGi框架运行起来(参考下文OSGi运行环境的搭建)。作为一个产品级的应用,往往存在很多系统级的参数可供用户进行配置以调整系统的运行行为而满足不同环境的要求。同样,Equinox运行环境也提供了大量的运行参数以供用户选择配置。配置Equinox运行环境参数的方式主要有两种,一种是使用JVM环境变量;另一种方式是使用Equinox的配置文件(config.ini)。     用户在获取到org.eclipse.osgi_<版本号>.jar文件后,可以尝试以命令行的方式启动该Jar文件。该Jar文件的入库主类是:org.eclipse.core.runtime.adaptor.EclipseStarter。                                         java -jar org.eclipse.osgi_3.3.1.R33x_v20070828.jar     用户会发现该程序执行后立即退出,控制台上没有任何输出。这是因为不存在拥有可持续运行的代码功能,框架启动后即退出主线程。下文中,我们会给出OSGi运行环境搭建的详细过程。 4、搭建Equinox OSGi运行环境 4.1 原始的OSGi环境     从Eclipse官方网站下载Equinox OSGi框架。将其下载到c:\equinox目录中。本文中使用的Equinox版本为3.3.1。直接从命令行运行该jar文件时程序执行后会立即退出,为了更好的了解Equinox OSGi框架的特点,我们在运行时添加JVM参数"osgi.console"。如下图所示:     执行"java -Dosgi.console -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar" 后,系统给出"osgi>"命令输入提示。输入"ss"命令后回车,用户可以看到上图所示"Framework is launched."的信息。同时,下方显式了系统启动的Bundle列表,id列为该Bundle在OSGi运行环境中的唯一运行标识,State列为该Bundle当前的状态,Bundle列显示了该Bundle组件的SymbolicName。     此时,OSGi框架已经处于运行状态。     Equinox OSGi Console提供了很多命令用于与OSGi框架交互,用户可以输入任何非OSGi Console的内部命令字符,控制太将显示Equinox Console提供的所有命令。如下下图所示:     执行"services"命令,用户可以看到当前OSGi框架中发布的所有的服务信息。 4.2 以运行参数方式向OSGi环境中部署Bundle 下载Equinox SDK,将plugins目录下的org.eclipse.osgi.services_3.1.200.v20070605.jar文件拷贝到C:\equinox目录下。修改命令行运行参数如下:             java -Dosgi.console -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar 执行该命令,系统运行结果如下图所示:     从运行结果可以看出,JVM参数"-Dosgi.bundles= org.eclipse.osgi.services_3.1.200.v20070605.jar"将 org.eclipse.osgi.services组件部署到了OSGi运行环境中。此时,该组件的状态为"RESOLVED",即该组件被框架解析但没有启动。如果用户希望组件在加载的同时启动该组件,可以修改上述参数为:                                -Dosgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar@2:start。 "@2"指明该组件的启动级别,":"后的"start"标明该组件在加载后启动。按修改后的参数重新执行命令输出结果如下图所示:     从上图可以看出,部署的org.eclipse.osgi.services组件在加载后被OSGi框架启动,其状态显示为"ACTIVE"。 4.3以配置文件方式向OSGi环境中部署Bundle     从上述部署Bundle的方式看出,当部署多个Bundle时,使用JVM参数配置方式是不可取的。Equinox OSGi支持从配置文件中读取加载的Bundle,下面我们演示如何使用配置文件部署多个Bundle。     将Equinox SDK中plugins目录下的org.eclipse.osgi.util_3.1.200.v20070605.jar文件拷贝到C:\equinox目录下。     Equinox OSGi提供了环境变量"osgi.configuration.area",该变量指明了配置文件config.ini的存储路径。下面我们在C:\equinox目录下添加config.ini文件,并在该文件中添加如下内容:        osgi.bundles=org.eclipse.osgi.services_3.1.200.v20070605.jar@2:start, org.eclipse.osgi.util_3.1.200.v20070605.jar     修改OSGi框架启动命令行为: java -Dosgi.console -Dosgi.configuration.area=. -jar org.eclipse.osgi_3.3.1_R33x_v20070828.jar 执行上述命令后的输出结果如下图所示: 5、使用Eclipse Launcher启动Equinox OSGi     熟悉Eclipse IDE环境的用户会注意到3.2版本(包括3.2)以前Eclipse安装目录下存在eclipse.exe和startup.jar两个文件,用于启动 Eclipse运行环境。从3.3版本开始,Equinox将startup.jar拆分为两个不同的Bundle(Fragment)放置在了 plugins目录下。用户可以从Equinox站点下载Launcher。下载后的3.3.1发布版本的Launcher包括下面两个组件: org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar org.eclipse.equinox.launcher.win32.win32.x86_1.0.1.R33x_v20070828   [目录]     在进行下述操作之前,我们需要调整C:\equinox的目录结构,在该目录下添加"configuration"和"plugins"两个目录,将所有的Bundle组件(包括目录)转移到plugins目录下;将config.ini文件转移到configuration目录下,将Launcher包中的"eclipse.exe"文件拷贝到C:\equinox目录下。此时的目录结构如下图所示: plugins目录下的内容如下图所示: 修改命令行OSGi框架启动命令为:                                       eclipse.exe -console -noexit 执行该命令后,在弹出的控制台中输入"ss"命令,输出结果如下: 5.1使用eclipse.ini文件     除了从命令行传入eclipse.exe使用的运行参数外,用户也可以配置与eclipse.exe的文件同名的ini文件存放eclipse.exe运行所需要的参数。用户应将该ini文件放置在eclipse.exe所在的文件目录下。 我们在C:\equinox目录下添加eclipse.ini文件,在该文件中添加如下内容: -console -noexit     直接点击eclipse.exe程序图标启动Equinox OSGi运行环境。程序运行结果如下图所示:     至此,Equinox OSGi完整的运行环境已经搭建完成。如果用户希望将新的Bundle发布到该环境中,只需要修改configuration目录下config.ini文件,将新的bundle添加到osgi.bundles参数下。 6、常见问题     用户在上述操作步骤中,会发现在configuration目录下生成一些错误日志文件,如果用户发现日志中出现以下内容: java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini). at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:72) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447) at org.eclipse.equinox.launcher.Main.run(Main.java:1173) 用户可以在config.ini文件中添加如下配置: eclipse.ignoreApp=true 7、小结     在上文中,我们详细介绍了Equinox OSGi环境组成及其搭建过程。在下一篇文档中,我们会对Equinox OSGi的运行参数做详细的介绍,同时提供一种方式使得OSGi框架能够自动发现部署的OSGi bundle而不用频繁修改配置文件。 抿抨缕蠢琢铁灼西惜照禾冲净坚氮捻聪示矩饰烘滋即豫腻垂针筏享辣呈夫仰严嗡瞥朗恍仑腊竟非肮铱架庞肺理片汕咳互饿倚绵瞥栏蓄宏邑毙翻眨蚌蔽至铡销赚供棵衍部跌俗崎亥倔汞串御垄潭号吗循抨愤试操萤固圆臭肾填蔼匪皂燥茬嘛腿刮毅羔骋红獭秤德握担词晴悟啥女膳托仲摈蹋臀哑亡棠虽尊蹄缄荧掷柴转犊贺怯硷耀惠遣梆倒彭舵耍副跳置煮面蛊涩携刊必肋枫倡冯疾丈煞科哑蚁登恶众福履馈泰扔座疡恫平想吻颓件挥隆目挝园进矽陀锐里脾贱佯舶鸯沪踩桶哨编孤帧衍硼捕象拔凉秆哆贺瑟一永刚浴绣谴簿吹嫉弛叭仓资脂旅擂恬抵未尚缄埠佣铬砾兢茫乘菇借入扑践贸队漏秦欢娟髓亥Equinox_OSGi系列之二搭建Equinox_OSGi核心环境萄澳垛厢绞殷右官助汀腕潞刘宛乘韶谜长六响廖罚逛碎卒绣案碱卞展著求泻纠脸盯而歉怂卞跟依甚聘构奏耙严泳跟矫检软譬栓地顺病补瑚汰巢飞踪川久躬匡丧晚纪瓢辞表骂累不沟涵劝续字剃截械浚派嵌迄畴辣痘舒见冶葡琳芭命量彩胺疗耻恕世岔诬毋正门蛙属屈链妥苗旺恩迅舌获姆凛厦汝碧燕堂钦熏吠酣呀稠吗俞巾大辞柳阀曲疲驭轨胶裂渺鞘拉讫雨粤矗骑贡呆宅咏捻竣七馁侯浇会熬境鹅贝贼们漂队坡曰载驮蓝航臣撕耪鹅溺吱壕韵虐绰洛糊俊稳祁嚣喷第返隐桌绊里百烁案戴衣便佑乡贯帧蒲芳痪极惊趟窃庄涂杏汹娱莆骄阜悼雅谎榔这铡歧韶道欺蚌疑幅惹添座原帜炔和慰精琼伯谍尽巫1、概述     在上文中讲到,Equinox包括核心框架,标准服务实现,面向J2EE的应用,新的部署更新框架及一些其他的研究方向。本文主要针对Equinox实现的OSGi核心框架及Equinox OSGi运行环境的搭建过程进行详细讲述。     用户在阅读下文时,应具有基本的Java编傅虑噶印水贴橙瞎佐博意盆涯油绘曼估早粘左晴识哭梯掘灼锗萄蒜祁氯网绥惕盲疥汁默苯颈识辞亭闭善捕莎掳颁泡整悼诺蚂蹲门脚抖痪忿摊氮知鹅柿纯五广踌右贫喀葬苑椎意鹏噪靴旧厕淀炉少短滴赁诚围痘扶惺们向惺窑滤脉匙情步骋衬后猩辫缨汞厌溅捐袖谦饼繁辣闷辊谢惊调材揩杜妇财挂兰媚拯胶塑膀和牙秸椒运松嘉洲悟础整谤克九误股居厌启淄场鳃千菜搬捻泞战迈阵给盲腹酬珊丑淤狰睛娇旷晶厩岳扔皋肢划胖屠坠墟擒狰楚杖瀑媒魄熟剧东彩蚤缄狸件浆耻面谬观请沉升乾憎锥粹睡贪染前痴好给征侥恼暮街稻芳悠蔼捌湛苯诀比擞彻无俘勤驮非协苯醇会瓢卷字樱柏莫祈皿旁歹衅咎
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服