logo资料库

OSGi原理与最佳实践(完整版).PDF

第1页 / 共260页
第2页 / 共260页
第3页 / 共260页
第4页 / 共260页
第5页 / 共260页
第6页 / 共260页
第7页 / 共260页
第8页 / 共260页
资料共260页,剩余部分请下载后查看
目录
1 OSGI简介
2 OSGI框架简介
3 基于Spring-DM实现Petstore
4 基于Apache CXF实现分布式Petstore
5 构建OSGI Bundle Repository
6 OSGI规范解读
7 Equinox实现分析
8 Felix实现分析
9 Spring-DM实现分析
10 CXF实现分析
11 先睹为快:OSGI R4.2草稿版
12 OSGI展望
第 1 童 OSGi 简介 .....-...… … 目录 ‘ ......,........................... ..。…............... . ....•..• 1 . ,_. -,... ,-. -, .•.•................. .••.... ,_ _.. .•.•..•................•. __.. I 1.1 梦想中"即捕即1日 ' 的单纯 。,... .._ _........... .•...... .•.....• _, •••....•.. .•....... I 1.2 OSGi. 拯救 Ja...a 棋块化的蜒施 1.3 厚帜溥发的 OSOi ............."..._................................................. ..............................................2 1.4 OSGi 雄本概在 ...... .........,............ ..,..... •••• 3 1.4.1 Bundle..........................................................................................................................3 1.4.2 Scrvicc........................................ ... 4 1.4.3 Service-Oricntcd Com阳ncnt Modcl ( SOCM ) ........................................................ 4 1.4.4 Declamti ve Service ......................................................................................................6 ................................. 6 1.4.5 部署 ................ . . . .. . . . ............ 7 2.1 Equinox....................................................................................................................................7 "….......... 7 .............................................................................................................. 7 !"l 川........ 10 " """ ?I·e·- …17 - a l a ‘~ 毡 :~.....~.......... 35 简介 环境措迎 Hdloworld u· 开发传统提砌的应用 ffE . 从外部自胡 Rquin'ox ‘. .、J EE h E , r _ 11 r ....,... r' 2.1.3 T ' 2.1.4 2.1.5 2. 1.1 2.1.2 6·' 第 2 童 OSGi 框架简介 。"… .......... ‘ 2.2.1 简介 2.2.2 环榄捕边 2.2.3 2.2.4 在 Eclipse 中调试 Fclix .. …… 2.2 Felix ....... . ...........................................................................,…·川............................. 38 38 38 应用的部胃........................ .................................. . ............................. .. ... .. ................. 38 39 2.3 Spring-DM ....................................,............…"………..…….."................... 43 2.3.1 简介 43 .................................................…… ................ 44 2.3.2 环填描E且 2.3.3 HclloWorld ................................................................................................................. 48 2.3.4 Web 版 HcUoWor1d ..... ….........…...................................... 51 .. .......... .. .......... 57 " 即描即阳"的 Pe臼tore............................................................. . ........................................ 57 第 3 童基于Spring-DM 实现 Petstore ...…….......….... 3. I ω
阳 |自晕 3. 1.1 Pctslot'C 1)(J功能lfti;R............. ,..............................................................., ....................57 3. 1.2 OSGi 根架的功 f血和设计思想 到 3.1.3 PCLStore 的设计 3.2 箭一 f~ Pctstorc !'J!J 实现 ......................................................................... 7() 60 3.2.1 3.2.2 3.2.3 环境准备 .................................. ..... ........ 70 Uûls 悦J.:k ........................ .................................................... ........ ................ω72 ... ................................................. ....... ..... ......... 74 BOOISlrUp 模块 3.2.4 333 567 ProduclDal 椒块 坷 , . 。 , . , - ShoppingCar由,1 模块 ProdUCI LiSl 椒块 ShoppinεCan 快快 。..................................... 7~ ................. ......................... .................. ................ 80 81 85 ......................... 85 3.2.8 ProductM ana墨emcnl 慌块 部悟.................,… .....… 3.3 85 3.4 PC(Slore (l(J扩殷 ." ....... .•.•. ............... ................................................................................. 85 第 4 童基于 Apache CXF 实现分布式 Petstore.....................................................................87 4.3 Apache CXF 简介 .................... . 4.1 分布式 OSGi .................… 4.2 分布,式 PeLStore 的设计.................. ...、 87 .......................................................... 87 …. . .… .,....,.............................. 90 4.3.1 CXF~DOSGi HelloWorld ...........................................................................................90 .....… ..........95 4.3.2 集成 Spring-DM 的 CXr-DOSGi HelloWorld ...........… 101 4.4 分布式 PCLStorc 的实现 第 5 意 5.1 5.2 4.5 部署 105 构m.OSGI Bundle Repositor'y .....,.,.,‘.,...... 向 .ι. ‘"、.二.'.. ,......肉、 )07' OSGi Bundlc. Reposilory 的使用叩叫 trzi Apaèhc Fc1îx OBR 的使用 5.2.1 命令行方式的用法 I J!07 - 110 ........ ..... ........ ..... ................................................, I I 0 ~町、 11 h r { ' /1 11 hl· ·一 '哇!正lp J.~'tn -一 - n 第 6 章 OSGi 规范解读 5.2.2 6.1 OSGi 规范:l>!:IPi IJj程 6.2 Core 规范解读 i飞码方式使 fUOBR.................................................................................................113 5.3 向埠。SGi Bundle Rcposilory ............................................................................................. 11 7 ...... . .....…." ..... ..... ............................................... ....... 119 。................................................................, ................... 119 120 Modulc Layer........................................................................................................... 120 Li feCyc1e Lay町.. .......... . . .......... •••• 129 Servicc Layer ........................................................................................................... 132 6.2.2 6.2.3 6.2.1 6.3 OSGi 6.3.1 Scrvice ~姐范解凶 133 Log Servicc .............................................................................................................. 134 。 6.3.2 HUp Servi田........................................ 1 37
第 7 章 7 1 7.2 菌 8 章 8.1 8.2 第 9 章 9.1 9.2 吕景 | 阳 666 333 345 Configur.nion Admin Servi∞ Declaralivc Services...................................... __.......... 142 E\lenl Admin Se凹ICC . ... ....... ........ .......... ... ,_. .....,…….............................. 145 町 …… "…·….............................. .... ...... ....... 149 11ll ,, 139 nyAM A - Y A 崎 间 加就井解析 jar J;J Bundle Bundle 关 Jt 亨A炎1Al ~直机制 EquJnox 实现卦析 •....•... • 模块化 7. 1.1 7.1.2 动态化.. Felix 实现分析. ................ ............………· …........... .…....…… 愤块 !t 8.1.1 8. 1.2 动企 f也 胡:就并解析 jar j.] Bundlc 8undlc 失其宇&~培植1扳机制 -ny ζ J ‘ J ..........173 3347 7777 , sp付ng-DM 实现分析 •...•.... ..•.•....•.•.... ....•...•....•....••..•..... ....•....••..• . •... ....•... 1 回 Spring Dynamic M皿Jule 概kß.... . .............. . ................. . ............ ........ .................... . ...... ...... . . 189 2主布 j.J OSG; 1量卦茧:现卦忻......_......._..........................................._._....................... I 回 ..................................................................... I 四 Bean 9.2.1 Extcndcr Bund)c 启胡 Bundlc 中的 Namespace Handlcr 处理 ExtenderConfiguration 处理 Application臼 nleXI 处理 9.2.2 9.2.3 9.2.4 192 194 2∞ 9.3 将 OSGi Servi四 11λ;;'J Bean ............................................................................................ 2回 9.3.1 。sgi:service t'J(J 处理................................................................................................. 209 9.4 第 10 童 10. 1 10.2 10.3 @ !巳L 旦 ."..J?巳」 !L" 山川.................. .- 制忌l:!ìCI 和 osgi: Ii'i1 的处理…............白 9.3.2 将 8undl怡e 郎司雹E到 WebJ赢l~茹-嚣 守川.叫. 9归川.4削1 Wc抽le"阳出曲r 的阳启动 0川@. @ .f!ι@兰芒汇汇.. ….. 冉L ι ~....~.....~.~............. 214 !闷4 9.4.2 邮$署哥 Bundle JlJ Wcb J服匾9骨串 E棒量....... . .. .. .................. .................................................... 215 CXF 实现分析 ............ . ............ . .................................................... . . . ... . ...... ............ 21 7 ,........._,.,.......,....,..…............................................ .....2 J 7 Apuche CXF-DOSGi 31::现分析 Singlcßundle 'li.. n-包.................................. 217 四_......, .-.......211 把 ßundle 墨露 :J.J 且控股如 10.2.1 10.3. 1 10.3.2 10.3.3 10.3.4 SingleBundle 发行包的启功 2 18 。 …"…..... 221 DSW Bundle 启 41 ..........…...….,.............. . .. ..... . .............. . ................................, . .22 1 Rcg旧erDistnbution ProviderService .........…… ..................................................222 创娃 "∞k 对草且注册 LÎslener........................................................................... 224 处理吗前椎架中{J(J Bundle .....,.........................................................,..............,.... 225 10.3.5 :Il码1远舰服卦 10.4 使用远在E服卦 。 225 .............. 231
时 | 目亵 。,_ _, ••••.••• •••••••••••.• •••••••••••.••.••••.••. ,..... 23 J 10.4.1 Ois∞VC叩 Bundle 扇动 10.4.2 处理当前框架中的 Bundle...................................................................................232 IM.3 注册远程服务的本地存棍 ...234 先睹为恢 , OSGi R 4.2 草稿版 ..... .............. . .... . .................. .... _..... ... _..... .....•...... .... 237 Co阻..............._. ..... .... ......................................................................... 238 Il-- ModuLc Layer ................".......................................................................................238 Li fe川cycle Layer .................................………… 238 Service Lay町. .•. .. ............................... _._..... ,.... .................. 242 Framework API ......................................................................................................243 1234 Compcndìum...................................................................................................................... 243 川 2 . 1 Dcclaralive Services Spccification .........................................................................243 川 2 .2 Dcployment Admin Specification .......................................................................... 244 11 .2.3 Monilor Admin Service Specificulion................................,................................... 247 .....................................................,.........................,...................... 251 ...,................................................................. 251 Java 企业应用领域 OSGi 展望 第 11 童 11.1 11.2 第 12 童 12. 1 12.2 12.3 252 Java 标准领域............. OSGi R5.................,..................................................................................,...............,........253 索引 .............................................,............,........,.....,..................,....................................... 255 川'….................,.… • • •
第 1 OSGi 简介 1.1 梦想申‘四插即用"的系统 第一 /!(听到f剧中向读且飞钊丹1 Win AMP 描股掘的时悦 .ti彻气时 W;nA MP ~it~ 辜的捅件 - oJ 以 1i 便地下雄、安装、使用 . 在实际的主峙中.古i:t.] I 入 COM 组件技阜 fU绞艘块化的经历, 后来白己也做过一个产品用的捅件管理器〈实在不能说是插件平台) . 实现了联""的拍 f't远程 F 锐、'!i.毅、启功、停止帘管理工作 . 也¥I描if斗间的消息通知 . 0 I 趾这个曾月: :iI.tI!憧 Jl. 叫模块的 #J 牵管理,井且在实现上也发现官远没有锺初设想的t;ll 0)\ . 还有 '个问题是 , 这个插f'l 1fl'Jl辑是则 在公司的第一.tt产品上,目标JL做到公司内涵 IIJ ,阳 j止烧掉发现Jt实井早也L那么通用.排且这个 'I't理器也有吨相关平台 . "í时就在想,也[没有-个通用的!l(架,实现一个描件体革约构,使m r. 遵循规范 . 开放白 己的捅件,使用已有的描刊 , 而描t中且能控制对外阜寓的内容 , 在运行时 , 可 以动态地安慧、启动.停止、卸搜捕件 . 得个插件槌供 -个",j:个l且卦, )-他的捅件只是根据接 口来证取服持提供占.而完全不知道提供 r. 是谁. 阳陆有了这样的规范和枉'惧 , 我们就吁以IllI.Ò (ï (f M 古披外部使用了 . 如果调'也可能会导致外部A';统受 I~式影响 . 难追就设有 -种机制班保证战们只暴露细墨露自由部 分给外部么?
2 I 篝,. 05GI 简介 答案是盯定 {f (11. 那就是 OSOi (Open Service Gateway InÎlialive) , OSOi 的定义为 2 节,. Dyna.m.ic M叫 ule System For J川也从这个定义可见. OS口,自由主要职置就是为了让开发#能够构 建功态化、!Il块化的 Java 革统. 使用 OSGi 后. ,喧闹就可以埠描权"'-样完成描毯,例如时于一 个正在运行的亘锐,其中 一个快快使用到了日志服卦,但1'1 1町革统中没有提供盯志版卦0'1惧块, 就可以反接从网上 F~实现了日志服务 A凹的模块,然后动态地将此模块雄行安装,其他要使用 日志服骨的模块就吁以使用了 . 1.3 厚积薄友的 OSGi QSGi 联盟成立于 1999 年 3 月,撮'111 的目的是 h 智能靠店领域制定'在T- Jav提构建模块化­ iJJ态化革统的规范, 一丘 fll Eclip臼 V3.0 采1lJ 0SGi 作h只锐块化、动态化的平白之后,才让 OSGi 成了 Java 企业应用领域芷注的,g词,而在此之前,儿乎没有1:-少人昕说过 OSGi . Eclipse 的采用 λ帕提升了 OSGi 的知名度,并且得以让 Jnva 企业应用领域的产品提供商愿意开始尝试使llJ 。50i . IBM 、 BEA (叫时还没被 Orocle 收购】的尝试让 OSGi 远步成了焦点,尽管 IBM 只是在其 Websphere 中做了一个小尝试,但 BEA 且'1彻底改变了其底层提构,全部迁移到了早于 OSGi 描酶 的 microServices 框架 (mSA) 上.从这点上可以眉山. BEA 非常相 1,10S口,能给其产晶体制F 来巨太阳J好处,以&. OSGi 拥有11.峙的前景 . 丽从现在的情况来;u 可以认;i;J BEA 当时的决定 娃扑常行前瞻性眼光的 目前 OS口 i IL 乎成了所有 Java Application Se凹町的事实性标准. IBM Wcbsphere. Orocle Weblogic 、 Spring DM Scrvcr ,岳王先i Sun 的 Glassfish 部采用了 OSGi 作为其 实现峭的基础平甜.前 J8o~s AS5 '(1 也应矿T 对 OSGi Il'J主持,从这嗤方i面来看. OSGαi L!经梅 1I到9到1fT各λJava 产A品! 去实E 点之一 '只是f!i目并没青被广泛应用f1J Java 企业应用软件厂甜的产品中,但桐j 倩随.r;时间的 :!i展 .i占点也将改变 . 开源界对 OSGi 同样给 J'7 众辜的好 1'1'&巨大的主持. Apache 及 Spring 中挪有儿款采用 OSGi 的产品.而 Spring DM 且 Spring DM Servcr 更是在明了 Spring 对 OSGi O'J 认可,其他的开源根部 'i! {{其能够支持 OSGi . 抖种1/i于1且主持 OSGi (1J产品的发市曾纶-1J1.连续占据各 也 l'、断改造 . 樊 Java 新阔的头条,例如1 Struts 2 对于 QSGi 的主抖、 CXF 实现 Distnbuted OSGi 等.这段时期 可以称得上是 OSGi (11撞勃发展阶段. 厂丽的使 m 、芹iJ!(界的认可也 it OSGi 得以进入 Javll 标准领域,成为 Java i# 吉级的规施, 且中有 JSR 232 且 JSR 29 1.而由r- OSGi 的出色衣砚,更是导致 SU" 晴贸一手操办的 Java 模块 化舰也一-JSR277 届埠市告版弃
, .4 。SGI 醉回| 3 纵观 OSGi 从 19四年产生 flJ现在,可谓Jl凭借Ecl ip!iC 的来附而 鸣惊人,性本排行一个观 点评如l 一项技准是否热门的 个标准是此提目的 111版情况,在 2009 年之邮 xí~ J.!由外还娃凶 内,部没有 OSGi 的书出版〈仅有的两本郁 ~OSGI 规范) . 而到了 2饵"年.副外涌现了J;.哑的 OSGi ~篇.国内也有了 ii .(,.能阅读的第一本 OSGi 巾立甘篇,从这个JJ曲也反映出 OSGi 已经从 不如1 1:1 .到厂商扣开源界认吁. j日l 影响 Java il. i:r .,þ 11t ~J规位,运lJ;~占}画成了现在的热门技~ . 1.4 OSGi 在对 OSGi 衍了一定了解后,楼下来肴哥 OSGi 中的一些~q" 慨:在. 1.4.1 Bundle 日 und le 从形式上讲,是在 META 阳F 日 4下的 MANIFEST.MF 文件中加入了。SGi 特定描述 的一个 jar 也. Bundle J.t虫;就Il:. OSGi 中的模块. Bundle 的也由周期被 QSGi 枢饵所管理,具有 如下几个状态, rNSTALLED 、 RESOLVED、 UN1NSTALLED、 STARTlNG、 AcrrvE、 STOPP1NG 状态之问的转换 J<革如阳川所后 Updøte 1.骨.... ii • 乡 ICτIVE t呻 STOPPING 回,-, Bundle 状意转换芙罩 Bundle .ilIi:1配置 JM 包巾的 MAN1FEST.MI言,可以控制从 BundJe 导出的{盐. I而没{,导出的包, 则在 Bundle 外部是不能够 if HlfICJ. 这样就 IRM 地元成了内部炎刷外部挠的隔离. Bundle 可以被 动态地宣统.启功、停止事1卸战.而 Bundle 也趾服卦( Service) 和细件 (Component) 的就体 . 在后面的例 F
I 11们窜出GI 简介 4 进行Itλ 的 h 式,部是在搞叮 B.""I.. Ni r OSGi 的J奄!TJ.就是由 -个个 Bundle 组成的. Bundle 就址我们手中的机水,通过 OSGi 的根架把这盹炽本组织在起,就形成了革统. frOSGi 中,待个 Bundlc /I1l1i (1 己独,~于J\他 Bundle 的 ClassLoader. JE [j.1 j;)这样,冉个 Bundle 内部的英趋隔离的 夜们也提到,一个 Bundle 可能会1ft jj)另外 Bundlc 的~. Bund le 之间是要交 忧的.却也这是 t怕也在现的呢? 种 Ii式 J.J. 通过 Package (t
分享到:
收藏