锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鏈枃璁插埌鐨勪緥瀛愭槸浠跨収緗戜笂鐢氫負嫻佽鐨勪竴涓緥瀛愶紝浣嗚嫤浜庝竴鐩存湭鎵懼埌婧愮爜錛岀綉涓婅創鐨勯兘鏄竴浜涜漿甯栵紝浠g爜鐗囨錛屼及璁″垵瀛﹁呭緢闅懼皢鍏惰繕鍘熷茍璋冮氾紒鎴戞渶寮濮嬪紕榪欎釜鍜氬挌鐨勬椂鍊欙紝鍏惰繃紼嬩箣鐥涜嫤錛岄毦浠ヨ█鍠伙紝鎵浠ユ兂鐫浠跨収璇ヤ緥瀛愮殑璁捐錛岀粰浜堝疄鐜幫紝鏂囧悗璐村嚭婧愮爜錛屽笇鏈涜兘甯埌澶у銆?br />
璇ヤ緥瀛愭槸涓涓叧浜庤綆楀櫒鐨勫疄渚嬶紝osgi.example.compute bundle(涓嬫枃綆縐癱ompute bundle)鎻愪緵浜嗙粺涓鐨勮綆楁帴鍙o細Compute錛屽彟澶栦袱涓猙undle鍒嗗埆涓簅sgi.example.compute.add(涓嬫枃綆縐癮dd bundle)鍜宱sgi.example.compute.multiply(涓嬫枃綆縐癿ultiply bundle)錛屽湪榪欎袱涓猙undle涓紝鍚勮嚜瀵筩ompute bundle榪涜涓嶅悓鐨勫疄鐜幫紝涓涓疄鐜板姞娉曪紝涓涓疄鐜頒箻娉曘傚彟澶栬繕鏈変竴涓湇鍔℃秷璐硅卭sgi.example.compute.consumer bundle(涓嬫枃綆縐癱onsumer bundle)錛宑onsumer bundle璐熻矗娑堣垂add bundle鍜宮ultiply bundle鎻愪緵鐨勬湇鍔°備笂榪?涓猙undle涔嬮棿鐨勫叧緋誨涓嬪浘鎵紺猴細
鍒涘緩4涓猙undle涔嬪悗鐨勫伐紼嬬洰褰曞涓嬪浘鎵紺猴細
閫氳繃璇ョず渚嬶紝灝嗘紨紺哄浣曞埄鐢⊿pring DM鍙戝竷鍜岃皟鐢∣SGi鏈嶅姟錛屽悓鏃惰繕灝嗘紨紺篛SGi鐨勫姩鎬佹湇鍔¤皟鐢ㄨ兘鍔涖?br />
1. bundle osgi.example.compute
compute bundle鍙彁渚涗竴涓帴鍙b斺擟ompute錛屽洜姝ゆ棤闇渚濊禆鏇村鐨刡undle錛屽彧闇鏈鍩烘湰鐨刼sgi鍗沖彲銆傚洜涓轟笉娑夊強娉ㄥ唽璧勬簮涔嬬被鐨勶紝鎵浠ヤ篃鏃犻渶Activator鍏ュ彛綾匯?br />
Computer鎺ュ彛婧愪唬鐮佸涓嬫墍紺猴細
add bundle鏄compute bundle鐨勫叿浣撴湇鍔″疄鐜幫紝鍦∕ANIFEST.MF鏂囦歡闇瑕佸紩鍏sgi.example.compute鍖咃紱褰撶劧涔熷彲浠ラ氳繃娣誨姞渚濊禆bundle鐨勫艦寮忥紝鍗充笉寮曞叆鍖咃紝鑰岀洿鎺ュ湪Required Plug-ins涓坊鍔燾ompute bundle銆傚涓嬪浘鎵紺猴細
娉ㄦ剰錛?span style="color: #ff0000">OSGi瀹樻柟鎸囧嚭錛屽綋闇瑕佺敤鍒板叾浠?span style="color: #ff0000">bundle鐨勭被鍨嬫椂錛屼笉鎻愬′緷璧?span style="color: #ff0000">bundle錛屽簲璇ュ敖鍙兘閲囩敤Import-package鐨勬柟寮忓紩鍏ュ寘錛屽洜涓轟緷璧?span style="color: #ff0000">bundle鍙兘鍦ㄥ姞杞?span style="color: #ff0000">bundle鐨勬椂鍊欏彂鐢熼棶棰樸?/strong>
閫氳繃寮曞叆osgi.example.compute鍖咃紝osgi.example.compute bundle琚姞鍒頒簡add bundl鐨刢lasspath褰撲腑錛岃В鍐充簡寮鍙戞椂鏈熺殑綾誨瀷璇嗗埆闂銆?br /> 榪欐牱涓鏉ワ紝鍦╝dd bundle涓氨鑳戒嬌鐢╟ompute bundle涓殑鎺ュ彛浜嗭紝Computer鎺ュ彛鐨勫疄鐜板涓嬶細
Compute鐨勫疄鐜板凡緇忓疄鐜頒簡錛岄偅涔堝浣曞皢鍏跺彂甯冨嚭鍘誨憿錛熻繖涓槸鐢盨pring DM璐熻矗錛孲pring DM鍒╃敤OSGi鍛藉悕絀洪棿涓嬬殑<service>鍏冪礌灝哹ean瀵煎嚭涓篛SGi鏈嶅姟銆傛渶綆鍗曠殑褰㈠紡涓猴細
浠庣ず渚嬩腑鍙互鐪嬪嚭錛宐eanToPublish琚玸ervice鍏冪礌澹版槑瀵煎嚭銆?br /> 鍙﹀錛宻ervice緇撶偣榪樻湁涓浜涢珮綰у睘鎬э紝濡俤epends-on銆乧ontext-class-loader銆乺anking絳夊緟錛岃鎯呰鐪媠pring dm reference銆?br /> 棣栧厛錛岄渶瑕佸湪add bundle鐨勫伐紼嬫牴鐩綍涓嬬殑”META-INF”鐨勬枃浠跺す涓嬪垱寤轟竴涓枃浠跺す錛屽彇鍚?#8221;spring”錛孲pring DM鑳藉鑷姩瑙f瀽璇ユ枃浠跺す涓嬫墍鏈夌殑spring閰嶇疆鏂囦歡銆俿pring閰嶇疆鏂囦歡鐨勫叿浣撳唴瀹瑰涓嬫墍紺猴細
璇undle鍜宎dd bundle鐩鎬技錛屽湪榪欏氨涓嶈禈榪頒簡銆?br />
4. bundle osgi.example.compute.client
欏懼悕鎬濅箟錛岃bundle灝嗕綔涓篴dd 銆乵ultiply涓や釜bundle鐨勫鎴穊undle錛屾紨紺哄浣曞鍏ユ湇鍔°?br /> OSGi鐨勬祴璇曞伐浣滄瘮杈冮夯鐑︼紝榪欐柟闈㈣繕娌$爺絀訛紝鍦ㄨ繖閲屽埄鐢╯pring瀹炰緥鍖朾ean鐨勬椂鏈燂紝浠庢瀯閫犲嚱鏁板叆鎵嬶紝瀵規湇鍔¤繘琛屾祴璇曘侰lient綾葷殑瀹炵幇寰堢畝鍗曪紝濡備笅鎵紺猴細
鍙﹀錛屽洜涓篶lient鐢ㄥ埌浜嗗叾浠栧嚑涓猙undle鐨勭被鍨嬶紝鎵浠ラ渶瑕佸鍏ョ浉搴旂殑鍖咃紝姝ラ鍦ㄤ笂闈㈠凡鏈夎鍒般?br /> spring dm闈?lt;reference>鍏冪礌鏉ュ紩鍏ユ湇鍔★紝鏈綆鍗曠殑褰㈠紡濡備笅鎵紺猴細
濡傛灉闇瑕佺敤鍒拌鏈嶅姟錛屽鏌愪釜bean鍖呭惈涓涓猚om.xyz.MessageService灞炴э紝鍒欓厤緗bean濡備笅鎵紺猴細
闇瑕佸嬀閫変腑spring bundle鐗堬紙2.5.6錛夛紝spring dm鐨勫嚑涓牳蹇冨寘錛歝ore銆乪xtender銆乮o鍐嶇偣validate bundles鎸夐挳錛屾牎楠屾槸鍚﹀凡鍏ㄩ儴閫変腑鍏朵緷璧栫殑bundle銆傜劧鍚庡嵆鍙偣鍑昏繍琛屼簡銆?br />
榪愯涔嬪悗錛屾垜浠彂鐜版帶鍒跺彴杈撳嚭緇撴灉錛?br />
The Sum is---11
閫氳繃ss鍛戒護錛屽涓嬶細
5 ACTIVE osgi.example.compute.multiply_1.0.0
6 ACTIVE osgi.example.compute.add_1.0.0
7 ACTIVE osgi.example.compute.client_1.0.0
灝?鍋滄帀:stop 6
鐒跺悗鍐峳efresh 7錛屾帶鍒跺彴杈撳嚭濡備笅緇撴灉錛?br />
The Multiply is---30
閫氳繃 ss 鍛戒護錛屽涓嬶細
5 ACTIVE osgi.example.compute.multiply_1.0.0
6 RESOLVED osgi.example.compute.add_1.0.0
7 ACTIVE osgi.example.compute.client_1.0.0
鐜板湪multiply澶勪簬榪愯鐘舵侊紝鑰宎dd宸茬粡琚仠姝紝鎵浠lient瀵煎叆鐨勬湇鍔″疄闄呮槸鐢眒ultiply鎻愪緵鐨勩?br />
6. 鎬葷粨
閫氳繃璇ユ枃妗o紝鎴戜滑宸茬粡娓呮浜嗭紝濡備綍浣跨敤Spring DM瀵煎嚭銆佸鍏ユ湇鍔°係pring DM鐨勪竴浜涢珮綰х壒鎬ц鏌ラ槄spring dm reference銆?br />
闄勪歡錛?a href="/Files/benniaolk/OSGi/Spring涓嶰SGi鐨勬暣鍚?1.rar">osgi.example.compute.rar
鐜板湪鐨別clipse閮藉凡緇忓寘鍚簡Equinox錛屾棤闇鍗曠嫭涓嬭澆銆?br /> 2. 寮鍙慜SGi鐨凥elloWorld搴旂敤紼嬪簭
鍦ㄨ繖涓鑺傦紝鎴戜滑灝嗗紑鍙戜竴涓狾SGi bundle錛屾紨紺哄浣曞埄鐢‥quinox榪涜OSGi bundle鐨勫紑鍙戙佽繍琛屽強璋冭瘯錛屼負涔嬪悗鐨勭ず渚嬪仛鍑嗗銆?br />
棣栧厛錛屾柊寤轟竴涓狿lug-in宸ョ▼錛屽涓嬪浘鎵紺猴細
涓嬩竴姝ワ紝娉ㄦ剰閫夋嫨鐩爣騫沖彴錛岄粯璁や負Eclipse version *錛屽皢鍏舵敼鎴怑quinox錛屽涓嬪浘鎵紺猴細
涔嬪悗鎸夐粯璁や笅涓姝ュ嵆鍙紝鍒版渶鍚庝竴姝ユ椂錛屾棤闇鏍規嵁妯℃澘鍒涘緩宸ョ▼錛屽幓鎺夐粯璁ょ殑鍕撅紝濡備笅鍥撅細
鐐瑰嚮瀹屾垚錛屽垱寤虹殑宸ョ▼鐩綍濡備笅鍥炬墍紺猴細
鍦ㄥ脊鍑虹殑瀵硅瘽妗嗕腑錛屾柊寤轟竴涓狾SGi Framework榪愯鐜錛堝弻鍑籓SGi Framework鍗沖彲錛岃繖閲屼負鍏跺彇鍚岴quinox錛夛紝閫変腑helloworld(1.0.0)錛岀劧鍚庣偣鍑誨彸杈圭殑Add Required Bundles鎸夐挳錛宔clipse灝嗚嚜鍔ㄩ変腑榪愯helloworld鐨勪緷璧朾undle錛屽鏋滄湁蹇呰錛屽彲浠ョ偣鍑誨彸涓嬬殑Validate Bundles楠岃瘉鎸夐挳錛岄獙璇佺▼搴忔甯歌繍琛屾墍闇鐨刡undle鏄惁閮借閫変腑錛屾渶鍚庣偣鍑昏繍琛岋紝鍥炲埌鎺у埗鍙幫細
osgi> Hello World!
鍙互鐪嬪埌錛屼箣鍓嶅湪Activator鐨剆tart鏂規硶涓殑杈撳嚭璇彞宸茬粡琚緭鍑哄埌鎺у埗鍙幫紝鎴戜滑鍙互閫氳繃鍛戒護ss鏌ョ湅Equinox鐨勮繍琛屾儏鍐碉紝鍙互鐪嬪埌涓鍏辮繍琛屼簡涓や釜bundle錛屽涓嬶細
ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.3.R34x_v20081215-1030
1 ACTIVE helloworld_1.0.0
榪樿寰椾箣鍓嶈鍒拌繃鐨刡undle鐨勫嚑縐嶇姸鎬佸惂錛焗elloworld宸茬粡榪愯璧鋒潵浜嗐?br />
閭d箞Equinox鍏蜂綋鏀寔鍝簺鍛戒護鍛紵涓嬭〃鍒楀嚭浜嗕富瑕佺殑涓浜涘懡浠わ紝濡傞渶鏌ョ湅鏇磋緇嗙殑鍛戒護娓呭崟錛屽垯鍙互鍦ㄦ帶鍒跺彴閿叆help銆?/p>
綾誨埆 |
鍛戒護 |
鍚箟 |
鎺у埗妗嗘灦 |
|
鍚姩妗嗘灦 |
|
鍋滄妗嗘灦 |
|
|
鍏抽棴銆侀鍑烘鏋?/p> |
|
|
绔嬪嵆閫鍑猴紝鐩稿綋浜?System.exit |
|
|
鍗歌澆鎵鏈?bundle錛堝墠鎻愭槸宸茬粡 shutdown錛?/p> |
|
|
璁劇疆灞炴э紝鍦ㄨ繍琛屾椂榪涜 |
|
鎺у埗 bundle |
|
瀹夎 |
|
鍗歌澆 |
|
|
鍚姩 |
|
|
鍋滄 |
|
|
鍒鋒柊 |
|
|
鏇存柊 |
|
灞曠ず鐘舵?/strong> |
|
灞曠ず瀹夎鐨?bundle 鍜屾敞鍐岀殑鏈嶅姟 |
|
灞曠ず鎵鏈?bundle 鐨勭畝鍗曠姸鎬?/p> |
|
s |
灞曠ず娉ㄥ唽鏈嶅姟鐨勮緇嗕俊鎭?/p> |
|
|
灞曠ず瀵煎叆銆佸鍑哄寘鐨勭姸鎬?/p> |
|
|
灞曠ず鎵鏈夊凡緇忓畨瑁呯殑 bundles 鐨勭姸鎬?/p> |
|
|
灞曠ず bundles 鐨勫ご淇℃伅錛屽嵆 MANIFEST.MF 涓殑鍐呭 |
|
|
灞曠ず LOG 鍏ュ彛淇℃伅 |
|
鍏跺畠 |
|
鍦ㄥ彟澶栦竴涓繘紼嬩腑鎵ц涓涓懡浠わ紙闃誨鐘舵侊級 |
|
鍜?EXEC 涓嶅悓鐨勬槸涓嶄細寮曡搗闃誨 |
|
|
淇冧嬌鍨冨溇鍥炴敹 |
|
|
寰楀埌灞炴э紝鎴栬呮煇涓睘鎬?/p> |
|
鎺у埗鍚姩綰у埆 |
|
寰楀埌鏌愪釜 bundle 鎴栬呮暣涓鏋剁殑 start level 淇℃伅 |
|
璁劇疆妗嗘灦鐨?start level |
|
|
璁劇疆 bundle 鐨?start level |
|
|
璁劇疆鍒濆鍖?bundle 鐨?start level |
鑷蟲錛屾垜浠凡緇忔垚鍔熺殑婕旂ず浜唄elloworld錛屽垵姝ヤ簡瑙d簡OSGi鐨刡undle鏄浣曞紑鍙戝茍榪愯鐨勩?br />
鐩墠錛屽叧娉?/span>OSGi鐨勪漢鍙樺緱瓚婃潵瓚婂錛?/span>OSGi鏈韓涔熸棭宸蹭粠閭d釜涓撴敞浜庡祵鍏ュ紡騫沖彴鐨?#8220;灝?#8221;瑙掕壊杞彉榪囨潵浜嗭紝鎱㈡參鍚戜紒涓氱駭搴旂敤甯傚満娓楅忋?/span>
浠庢煇縐嶈搴﹁錛?/span>Eclipse鍙互璇存槸OSGi鍦ㄤ紒涓氬簲鐢ㄩ鍩熺殑璇曢噾鐭籌紝2003騫?/span>Eclipse3.0鍋氫簡涓嬈℃灦鏋勪笂鐨勮皟鏁達紝緇х畫寤剁敤鎻掍歡鐨勬灦鏋勬濇兂錛屼絾鏄粠3.0鐗堜箣鍚庯紝鏄熀浜?/span>OSGi鐨勫疄鐜般備篃灝辨槸榪欎竴嬈$殑璋冩暣錛屾帹鍔ㄤ簡Eclipse鐨勮繀鐚涘彂灞曘?/span>
榪欐槸鍦ㄦ闈㈠簲鐢ㄧ殑鎴愬姛紺轟緥錛岃?/span>OSGi鐨勭洰鏍囪繙涓嶆浜庢錛屼互鍏朵紭縐鐨勭被鍔犺澆鏈哄埗錛屽彲浠ヨ錛屽彧闇瀵瑰叾榪涜鎵╁睍錛岄偅涔堝氨鍙互鐩爣鐬勫噯浠諱綍涓涓鍩熴傝皥鍒頒紒涓氬簲鐢紝鏃犲彲閬垮厤鐨勮娑夊強Web搴旂敤錛岀浉淇″ぇ澶氭暟浜洪兘鍦ㄤ粠浜嬭棰嗗煙鐨勫紑鍙戙?/span>OSGi R4鐗堝凡鏄庣‘鎻愬嚭浜嗗Web鐨勬敮鎸佹柟寮忊斺斿綋鐒訛紝榪欑鏂瑰紡榪樻槸寰堟湁闄愮殑錛岃繖涓鐐瑰皢鍦ㄥ悗闈㈢殑鏂囩珷涓緇嗚鏄庛?/span>
閴翠簬姝わ紝寰堝寮婧愭鏋墮兘宸茬粡鎴栨鍑嗗鍙戝竷鏀寔OSGi鐨勭増鏈紝姣斿Spring DM銆?/span>Struts1.8.1銆?/span>CXF絳夌瓑錛屽熀鏈笂鏃ュ父鎵鐢ㄧ殑寮婧愭鏋墮兘鍙戝竷浜嗗熀浜?/span>OSGi鐗堟湰銆傚彟澶栵紝鏈変笉灝戝簲鐢ㄦ湇鍔″櫒涔熷凡緇忓熀浜?/span>OSGi榪涜瀹炵幇錛屾瘮濡?/span>WAS浠?/span>6.1鐗堝氨宸茬粡鏄熀浜?/span>OSGi鐨勫疄鐜幫紝鑰?/span>Spring涔熷湪2009騫存帹鍑轟簡Spring DM Server錛屽彲瑙?/span>OSGi鐨勫惛寮曞姏榪樻槸寰堝ぇ鐨勩?/span>
閭d箞榪欎竴鍒囧皢浼氫負浠ュ悗鐨勫紑鍙戝甫鏉ヤ粈涔堝獎鍝嶅憿錛熸湰鏂囪瘯鍥句粠OSGi鍜屾瀯浠跺寲寮鍙戠殑瑙掑害璁よ瘑涓涓嬭闂銆?/span>
OSGi鐨勭被鍔犺澆鏈哄埗闈炲父浼樼錛屼負姣忎釜榪愯浜庡叾涓殑bundle鍒涘緩浜嗙嫭绔嬬殑綾誨姞杞藉櫒鐜錛岃岃繍琛屼簬鍚屼竴涓?/span>OSGi妗嗘灦鍐呴儴鐨?/span>bundle涔嬮棿涓嶅儚Web鏈嶅姟鍣ㄤ腑鐨?/span>Web搴旂敤閭f牱緇濈紭錛屽畠浠箣闂存槸鍙互榪涜鍖呬緷璧栫殑錛屽綋鐒?/span>OSGi涔熸彁渚涗簡鏈嶅姟娉ㄥ唽絳夌浉鍏蟲満鍒訛紝紜繚bundle涔嬮棿鐨勭浉浜掑崗浣滆兘鍔涖傝屼笖OSGi鏀寔bundle鍔ㄦ侀儴緗層傛墍浠ワ紝緋葷粺鏃犻渶鍋滄満閲嶅惎錛屽氨鍙互瀹炵幇鍏跺唴閮ㄧ殑鍔ㄦ佹洿鏂般?/span>
鏋勪歡鍖栧紑鍙戠殑姒傚康宸茬粡鎻愪簡寰堝騫翠簡錛屼技涔庝竴鐩寸己涔忎竴縐嶆湁鏁堢殑鏈哄埗瀵瑰叾榪涜鏀寔銆傛瀯浠跺寲寮鍙戜負緋葷粺寮鍙戝甫鏉ヤ簡寰堝濂藉錛屾暣涓郴緇熺殑寮鍙戝彲浠ユ寜鐓фā鍧楃殑鏂瑰紡榪涜鍒掑垎錛屼粠鑰屾寜妯″潡榪涜寮鍙戯紱緋葷粺鐢卞悇妯″潡涔嬮棿鎷艱鑰屾垚錛岄氳繃浠g爜涓綰х殑渚濊禆鎴栬呮湇鍔′緷璧栫殑鏂瑰紡錛涘浜庢煇涓ā鍧楄繘琛屾洿鏂幫紝鍙淇濇寔鎺ュ彛涓嶅彉錛屽垯鍙互瀹炵幇瀵瑰鐣屾棤褰卞搷銆?/span>
鐢變簬緙轟箯鏈夋晥鐨勫簳灞傛敮鎸侊紝鏋勪歡鍖栧紑鍙戞柟寮忎竴鐩存病鏈夋帹琛岃搗鏉ャ傜敱鍏跺浜?/span>Web搴旂敤鑰岃█錛屾兂瑕佸疄鐜版瀯浠跺寲寮鍙戯紝浼間箮鏇存槸鏃犱粠璋堣搗銆?/span>
OSGi鐨勫嚭鐜幫紝璁╄繖涓浜嬫儏鏈夋墍杞満銆備紶緇熺殑Web搴旂敤寮鍙戣繃紼嬩腑錛屽彲鑳藉ぇ澶氭暟浜虹殑鍋氭硶灝辨槸灝嗕竴涓ぇ鐨?/span>Web搴旂敤鎸夊姛鑳芥ā鍧楄繘琛屽垝鍒嗭紝閫氳繃鍖呭垏鍒嗘潵瀹炵幇妯″潡鍖栧紑鍙戯紝浣嗘槸鍚勬ā鍧椾箣闂村茍娌℃湁浠庣墿鐞嗕笂闅旂錛屽彧鏄互涓縐嶇粍緇囨柟寮忎笂鐨勭害鏉燂紝浣垮叾浠庤〃闈㈢湅涓婂幓鏄垎紱葷殑銆傚浜庤繖縐嶆柟寮忥紝鍔ㄦ佹洿鏂版煇涓ā鍧椾篃灝辨棤浠庤皥璧蜂簡銆?/span>
鑰屽鏋滃皢OSGi寮曞叆Web搴旂敤錛屾瘡涓ā鍧楅兘瀵瑰簲浜庝竴涓?/span>bundle錛岄偅涔堟ā鍧椾笌妯″潡涔嬮棿鍒欎粠鐗╃悊涓婅繘琛屼簡闅旂錛岃兘鏈夋晥鐨勫皢妯″潡鍐呴儴瀹炵幇瀵瑰闅愯棌銆傛ā鍧椾箣闂寸殑浜や簰錛屽彲浠ラ氳繃鎺ュ彛鐨勫鍑轟笌寮曠敤鏉ュ疄鐜幫紝瀵逛簬鏈粡瀵煎嚭鐨勯儴鍒嗭紝瀵逛簬鍏朵粬妯″潡鏄笉鍙鐨勩傚彟澶栵紝鐢變簬OSGi鏀寔bundle鐨勭儹閮ㄧ講錛岄偅灝辨剰鍛崇潃錛屽湪褰撳墠Web搴旂敤鏈仠鏈虹殑鎯呭喌涓嬶紝鍙互瀵規煇涓垨鏌愪簺妯″潡錛堝搴?/span>OSGi涓殑bundle錛夎繘琛屽姩鎬佹洿鏂幫紝鑰屼笉褰卞搷鏁翠釜搴旂敤鐨勬甯歌繍琛屻?/span>
榪欑浠庣墿鐞嗕笂鐨勬湁鏁堥殧紱葷殑鏂瑰紡錛屼負閲嶇敤甯︽潵浜嗘柊鐨勬柟寮忋備互鍓嶄唬鐮佷竴綰х殑閲嶇敤錛屼竴鑸兘閫氳繃Jar鍖呯殑褰㈠紡榪涜錛岃岃繖縐嶆柟寮忓瓨鍦ㄤ笂榪扮殑涓浜涚己鐐癸紝鍗沖皝瑁呮т笉澶熴傝岄氳繃鍩轟簬OSGi鐨?/span>bundle鐨勫艦寮忥紝鍒欏彲浠ユ湁鏁堥殣钘忓唴閮ㄥ疄鐜幫紝浠庡寘涓綰ц繘琛岄殣钘忥紙榪欎竴鐐逛釜浜鴻寰楀彲浠ヤ綔涓?/span>Java灝佽鎬х殑涓縐嶆墿灞曪紝浠ュ墠鐨勫皝瑁呭彧鑳藉仛鍒扮被涓綰э紝涓嶇煡閬撴湭鏉ユ槸鍚︿細琚?/span>Java瑙勮寖鍚告敹錛夈?/span>
灝辮繖涓鐐硅岃█錛?/span>OSGi瀵規瀯浠跺寲寮鍙戣繘琛屼簡寰堝ソ鐨勬敮鎸侊紝褰撶劧OSGi騫朵笉涓烘鑰岀敓銆?/span>
浠ヤ笂鎵璇寸殑鏋勪歡渚濊禆閮芥槸鍩轟簬API涓綰х殑錛岄偅涔堝綋鐒訛紝鎴戜滑涔熷彲浠ュ皢Web Service絳夌被鍨嬫湇鍔″皝瑁呰嚦鏋勪歡褰撲腑錛屽啀緇撳悎ESB錛屾槸涓嶆槸瀵?/span>SOA鐨勪竴縐嶆洿濂藉疄鐜板憿錛?/span>ESB鐨勫叧娉ㄧ偣鍦ㄤ簬鏈嶅姟錛岃繖鏄竴縐嶇粏綺掑害鐨勶紝瀹冨茍涓嶈冭檻鏈嶅姟鐨勫皝瑁呫侀噸鐢ㄧ瓑鏂歸潰鈥斺旇繖浜涙柟闈㈤兘鐢辮璁′漢鍛樺幓鎶婃彙銆傝岀粨鍚?/span>OSGi錛屽綋鐒惰繕闇瑕佸叾浠栬鏂界殑鏀寔錛屾瘮濡?/span>CXF宸茬粡鍙戝竷浜嗗熀浜?/span>OSGi鐨勫疄鐜幫紝鍙互灝嗘湇鍔″皝瑁呰嚦涓涓?/span>bundle錛屼互bundle涓哄崟鍏冿紝鍚戝鐣屾彁渚涙湇鍔★紝榪欑鏈嶅姟鍗沖彉鎴愪簡涓縐嶇矖綺掑害鐨勨斺旀瀯浠剁殑鐗圭偣涔嬩竴銆?/span>
緇間笂鎵榪幫紝鎴戠浉淇★紝OSGi鐨勫彂灞曪紝灝嗕細涓烘瀯浠跺寲鐨勫紑鍙戞柟寮忓甫鏉ョ闊熾?/span>
寮曞嚭璇濋錛?/span>OSGi鍜?/span>SCA鍦ㄥ緢澶氭柟闈㈡湁鐫寮傛洸鍚屽伐榪欏錛屽茍涓?/span>SCA鐨勫疄鐜版鏋垛斺?/span>Tuscany涔熷OSGi鍋氫簡鏀寔銆傝繖涓よ呮湁浜掕ˉ鐗規э紝鏈夋椂闂村皢瀵硅繖涓よ呭仛涓涓姣旂爺絀躲?/span>
鐩墠錛?/span>OSGi瑙勮寖鐨勬渶鏂扮増鏈負R4.2錛屾湁鍏寵瑙勮寖鐨勮緇嗘儏鍐佃闃呰OSGi瀹炴垬鐨勭7鑺傗斺?a href="/Files/benniaolk/OSGi/OSGi鍒濊瘑/1.pdf">娣卞叆OSGi銆?/span>OSGi妗嗘灦涓昏鍒嗕負鍥涢儴鍒嗭細榪愯鐜錛?/span>executionenvironment錛夈佹ā鍧楋紙Modules錛夈佺敓鍛藉懆鏈熺鐞嗭紙Life Cycle錛夈佹湇鍔℃敞鍐岋紙Service Registry錛夈傝繍琛屽湪OSGi鐜涓殑鏄竴涓釜鐨?/span>Bundle錛屼篃灝辨槸Modules鐨勫叿浣撳疄鐜般?/span>
瀵逛簬姣忎釜bundle錛岄兘鏈夊悇鑷殑ClassLoader錛屽湪榪欎竴鐐逛笂鍜屼紶緇熺殑Web搴旂敤鏈夌浉浼間箣澶勶紝鍦ㄤ紶緇熺殑Web搴旂敤寮鍙戝畬鎴愪箣鍚庯紝閮戒細灝嗗叾閮ㄧ講鍦?/span>Tomcat銆?/span>Jboss絳夋湇鍔″櫒涓婏紝榪欎簺Web搴旂敤閮芥湁鐫鍚勮嚜鐨?/span>ClassLoader鐜錛岃屼袱鑰呬箣闂寸殑鍖哄埆鍦ㄤ簬錛屼紶緇熺殑Web搴旂敤鏃犳硶鍋氬埌璧勬簮鐨勫叡浜紝鍥犱負瀹冧滑鏄畬鍏ㄧ嫭绔嬨侀殧紱葷殑銆?/span>OSGi妗嗘灦涓?/span>bundle涔嬮棿鐨勫崗浣滄彁渚涗簡搴曞眰鏀寔錛岄氳繃鍦?/span>bundle鐨?/span>MANIFEST.MF鏂囦歡涓?/span>Import-Package銆?/span>Export-Package絳夐」錛?/span>bundle涔嬮棿灝辮兘鐩鎬簰鍏變韓璧勬簮鍙婃湇鍔★紝鍦ㄤ互鍚庣殑鍗氭枃涓紝鎴戝皢緇欏嚭涓涓叿浣撶殑紺轟緥銆?/span>
鐢變簬OSGi鍏鋒湁鑹ソ鐨勬ā鍧楀寲緇撴瀯錛屾垜涓漢璁や負榪欏皢涓哄皢鏉ョ殑杞歡寮鍙戞柟寮忓甫鏉ュ緢澶х殑鍐插嚮錛屽皢鏇磋繘涓姝ユ帹榪涙ā鍧楀寲寮鍙戙傜洰鍓?/span>Web搴旂敤鐨勫紑鍙戜竴鑸噰鐢?/span>SSH妗嗘灦錛屽皢鏁翠釜搴旂敤澶ц嚧鍒嗕負Web錛堣礋璐e墠鍙板睍鐜幫級銆?/span>Service錛堣礋璐d笟鍔¢昏緫澶勭悊錛夈?/span>DAO錛堣礋璐f暟鎹寔涔呭寲錛夈?/span>Domain錛堝叏灞瀹炰綋綾伙級鍑犱釜妯″潡錛岃屽彂甯冪殑鏃跺欙紝灝嗚涓璧鋒墦鎴?/span>WAR鍖咃紝閮ㄧ講鑷蟲湇鍔″櫒涓娿傚鏋滈噰鍙?/span>bundle鐨勫艦寮忥紝姣忎釜妯″潡鍙互鍋氫負鐙珛鐨?/span>bundle榪涜寮鍙戝拰閮ㄧ講錛?/span>bundle涔嬮棿鐨勫崗浣滃彲浠ラ氳繃涓婅堪鐨勬柟寮忚繘琛岋紝鑰岃繖鏍峰甫鏉ョ殑濂藉灝辨槸錛屼竴鏃﹂渶瑕佸鏌愪釜妯″潡榪涜鏇存敼錛屽湪淇濊瘉渚濊禆鎺ュ彛涓嶅彉鐨勫墠鎻愪笅錛屽氨鍙互鍗曠嫭鏇存敼鐩稿簲鐨?/span>bundle錛屽啀榪涜鐑儴緗插嵆鍙紝榪欐牱涓鏉ワ紝濂藉鏄樉鑰屾槗瑙佺殑錛屾湁鏁堢殑鍒嗙浜嗗悇涓ā鍧楋紝鍑忓皯浜嗙淮鎶ゆ垚鏈?/span>
鐢變簬閲囩敤bundle鐨勫艦寮忥紝涔熷寮轟簡妯″潡鐨勫鐢ㄦс傝繖涔熸槸寰楃泭浜?/span>OSGi鑹ソ鐨勬ā鍧楀寲鏂瑰紡銆?/span>
鍙﹀涓涓緢閲嶈鐨勭偣灝辨槸OSGi鍏峰鐑嫈鎻掔壒鎬э紝bundle鐨勫畨瑁呫佸惎鍔ㄣ佸仠姝€佸嵏杞介兘鍙互鍦ㄨ繍琛屾椂鎸囧畾錛屽茍涓斿彲浠ラ殢鏃舵洿鏀廣傝繖鏍蜂竴鏉ワ紝鎴戜滑灝卞彲浠ュ仛鍒版棤闇閲嶅惎鏁翠釜搴旂敤錛岃屽彧瀵歸渶瑕佹洿鏀圭殑閮ㄥ垎榪涜鍗囩駭鎴栨墦琛ヤ竵鍗沖彲銆?/span>Bundl鐨勭姸鎬佸浘杞崲濡備笅鍥炬墍紺猴細
鍥?/span> 1 OSGi bundle鐘舵佽漿鎹㈠浘
浠ヤ笂灝?/span>OSGi鐨勪竴浜涘熀鏈殑錛屼絾涔熸槸寰堥噸瑕佺殑涓滆タ澶ф浠嬬粛浜嗕竴涓嬶紝鍦ㄤ互鍚庣殑鍗氭枃涓愭娣卞叆鍚с備互涓婇兘鏄叧浜?/span>OSGi鍘熺悊鎬х殑涓滆タ錛岄偅涔堝疄鐜拌瑙勮寖鐨勬湁鍝簺浜у搧鍛紵鏈鏈夊悕鐨勫簲璇ヨ鏁?/span>Eclipse鐨?/span>Equinox妗嗘灦浜嗭紝鍦ㄧ綉涓婃煡璧勬枡瑙佹湁浜鴻榪囷紝Eclipse3.0鐨勯偅涓嬈″崌綰ф妸鑷韓鐨勬瀯鏋跺仛浜嗕竴嬈¢潪甯稿ぇ鐨勮皟鏁達紝鍏朵富瑕佸師鍥犲氨鏄噰鐢ㄤ簡OSGi妗嗘灦錛屾洿濂界殑鏀寔浜?/span>Eclipse鐨勬彃浠朵綋緋匯傚彟澶栬繕鏈?/span>Felix銆?/span>knopflerfish絳夈?/span>
涓嶈繃璇濊鍥炴潵錛屽敖綆?/span>OSGi鏈夊緢澶氬ソ澶勶紝浣嗘槸鐜板湪涓昏榪樻槸搴旂敤鍦ㄦ湇鍔″櫒绔紝濡傜幇鍦ㄧ殑搴旂敤鏈嶅姟鍣ㄥ熀鏈笂閮介噰鐢?/span>OSGi鐨勬鏋訛紝鑰岀湡姝g殑搴旂敤甯傚満浠嶅鐞嗚搗姝ラ樁孌碉紝榪欏拰OSGi鐨勭敓鎬佺幆澧冭繕涓嶆垚鐔燂紝鍙枩鐨勬槸Spring鎺ㄥ嚭浜嗗叾Spring DM鍜?/span>SpringSource DM Server錛屽墠鑰呰兘澶熷緢鏂逛究鍙戝竷鍜屽紩鐢ㄦ湇鍔★紝騫朵笖涓?/span>Spring Framework騫沖彴鐩歌瀺鍚堬紝灝?/span>OSGi鐨?/span>bundle context涓?/span>Spring applicationContext铻嶅悎鍦ㄤ竴璧鳳紝澶уぇ鏂逛究浜?/span>OSGi鐨勫簲鐢ㄣ傚悗鑰呮槸OSGi bundle鐨勮繍琛岀幆澧冿紝鏄竴涓皢Equinox鍜?/span>Tomcat铻嶅悎鍦ㄤ竴璧風殑鏈嶅姟鍣ㄣ傚湪浠ュ悗鐨勫崥鏂囦腑灝嗚緇嗕粙緇嶈繖浜涘唴瀹廣?/span>