锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲福利在线视频,亚洲无限乱码一二三四区,国产啪亚洲国产精品无码http://m.tkk7.com/zhb8015/category/51178.htmlzh-cnTue, 05 Jun 2012 07:24:35 GMTTue, 05 Jun 2012 07:24:35 GMT60REST鏋舵瀯涓嬬殑鎺ュ彛瑙勮寖鍜屼嬌鐢ㄥ噯鍒欙紙 杞級http://m.tkk7.com/zhb8015/articles/379943.htmlzhb8015zhb8015Mon, 04 Jun 2012 08:38:00 GMThttp://m.tkk7.com/zhb8015/articles/379943.htmlhttp://m.tkk7.com/zhb8015/comments/379943.htmlhttp://m.tkk7.com/zhb8015/articles/379943.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/379943.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/379943.html鏉ヨ嚜: http://hi.baidu.com/yaobodi/blog/item/f655da333ff3974fac4b5f01.html
REST鏋舵瀯涓嬬殑鎺ュ彛瑙勮寖鍜屼嬌鐢ㄥ噯鍒?/div>
2010-04-08 15:14

REST鏋舵瀯椋庢牸鏄叏鏂扮殑閽堝Web搴旂敤鐨勫紑鍙戦鏍鹼紝鏄綋浠婁笘鐣屾渶鎴愬姛鐨勪簰鑱旂綉瓚呭獟浣撳垎甯冨紡緋葷粺鏋舵瀯錛屽畠浣垮緱浜轟滑鐪熸鐞嗚В浜咹ttp鍗忚鏈潵闈㈣矊銆傞殢鐫 REST鏋舵瀯鎴愪負涓繪祦鎶鏈紝涓縐嶅叏鏂扮殑浜掕仈緗戠綉緇滃簲鐢ㄥ紑鍙戠殑鎬濈淮鏂瑰紡寮濮嬫祦琛屻?/p>

鐩墠錛?1錛屾牎鍐咃紝嫻峰唴錛岄樋閲岃蔣浠剁瓑閮介氳繃REST鏋舵瀯鏉ュ疄鐜板鉤鍙版暟鎹殑寮鏀撅紝涓庣涓夋柟鐨勬暟鎹氦鎹€俁EST宸茬劧鎴愪負sns寮鏀懼鉤鍙?/a>鐨勯瑕佸紑鏀炬爣鍑嗐備笅闈㈢畝鍗曚粙緇嶄竴涓婻EST鐨勫師鐞嗗拰浣跨敤鍑嗗垯銆?/p>

wiki浠嬬粛瑙佹錛?a >http://en.wikipedia.org/wiki/Representational_State_Transfer

REST鏄粈涔?/strong>

REST鏄嫳鏂嘡epresentational State Transfer鐨勭緝鍐欙紝涓枃緲昏瘧涓?#8220;琛ㄨ堪鎬х姸鎬佽漿縐?#8221;錛屼粬鏄敱Roy Thomas Fielding鍗氬+鍦ㄤ粬鐨勮鏂?銆夾rchitectural Styles and the Design of Network-based Software Architectures銆嬩腑鎻愬嚭鐨勪竴涓湳璇俁EST鏈韓鍙槸涓哄垎甯冨紡瓚呭獟浣撶郴緇熻璁$殑涓縐嶆灦鏋勯鏍鹼紝鑰屼笉鏄爣鍑嗐?/p>

鍩轟簬Web鐨勬灦鏋勶紝瀹為檯涓婂氨鏄悇縐嶈鑼冪殑闆嗗悎錛岃繖浜涜鑼冨叡鍚岀粍鎴愪簡Web鏋舵瀯銆傛瘮濡侶ttp鍗忚錛屾瘮濡傚鎴風鏈嶅姟鍣ㄦā 寮忥紝榪欎簺閮芥槸瑙勮寖銆傛瘡褰撴垜浠湪鍘熸湁瑙? 鑼冪殑鍩虹涓婂鍔犳柊鐨勮鑼冿紝灝變細褰㈡垚鏂扮殑鏋舵瀯銆傝孯EST姝f槸榪欐牱涓縐嶆灦鏋勶紝浠栫粨鍚堜簡涓緋誨垪鐨勮鑼冿紝鑰屽艦鎴愪簡涓縐嶆柊鐨勫熀浜嶹eb鐨勬灦鏋勯鏍箋?/p>

浼犵粺鐨刉eb搴旂敤澶ч兘鏄疊/S鏋舵瀯錛屽畠鍖呮嫭浜嗗涓嬩竴浜涜鑼?銆?/p>

瀹㈡埛錛嶆湇鍔″櫒

  • 榪欑瑙勮寖鐨勬彁鍑猴紝鏀瑰杽浜嗙敤鎴鋒帴鍙h法澶氫釜騫沖彴鐨勫彲縐繪鎬э紝騫朵笖閫氳繃綆鍖栨湇鍔″櫒緇勪歡錛屾敼鍠勪簡緋葷粺鐨勫彲浼哥緝鎬с傛渶涓哄叧閿殑鏄氳繃鍒嗙鐢ㄦ埛鎺ュ彛鍜屾暟鎹瓨鍌ㄨ繖涓や釜鍏蟲敞鐐癸紝浣垮緱涓嶅悓鐢ㄦ埛緇堢浜彈鐩稿悓鏁版嵁鎴愪負浜嗗彲鑳姐?/div>

鏃犵姸鎬佹?/p>

  • 鏃? 鐘舵佹ф槸鍦ㄥ鎴鳳紞鏈嶅姟鍣ㄧ害鏉熺殑鍩虹涓婃坊鍔犵殑鍙堜竴灞傝鑼冦備粬瑕佹眰閫氫俊蹇呴』鍦ㄦ湰璐ㄤ笂鏄棤鐘舵佺殑錛屽嵆浠庡鎴峰埌鏈嶅姟鍣ㄧ殑姣忎釜request閮藉繀欏誨寘鍚悊瑙h request鎵蹇呴』鐨勬墍鏈変俊鎭傝繖涓鑼冩敼鍠勪簡緋葷粺鐨勫彲瑙佹э紙鏃犵姸鎬佹т嬌寰楀鎴風鍜屾湇鍔″櫒绔笉蹇呬繚瀛樺鏂圭殑璇︾粏淇℃伅錛屾湇鍔″櫒鍙渶瑕佸鐞嗗綋鍓? request錛岃屼笉蹇呬簡瑙f墍鏈夌殑request鍘嗗彶錛夛紝鍙潬鎬э紙鏃犵姸鎬佹у噺灝戜簡鏈嶅姟鍣ㄤ粠灞閮ㄩ敊璇腑鎭㈠鐨勪換鍔¢噺錛夛紝鍙幾緙╂э紙鏃犵姸鎬佹т嬌寰楁湇鍔″櫒绔彲浠? 寰堝鏄撶殑閲婃斁璧勬簮錛屽洜涓烘湇鍔″櫒绔笉蹇呭湪澶氫釜request涓繚瀛樼姸鎬侊級銆傚悓鏃訛紝榪欑瑙勮寖鐨勭己鐐逛篃鏄樉鑰屾槗瑙佸緱錛岀敱浜庝笉鑳藉皢鐘舵佹暟鎹繚瀛樺湪鏈嶅姟鍣ㄤ笂鐨勫叡浜笂 涓嬫枃涓紝鍥犳澧炲姞浜嗗湪涓緋誨垪request涓彂閫侀噸澶嶆暟鎹殑寮閿,涓ラ噸鐨勯檷浣庝簡鏁堢巼銆?/div>

緙撳瓨

  • 涓? 浜嗘敼鍠勬棤鐘舵佹у甫鏉ョ殑緗戠粶鐨勪綆鏁堟э紝鎴戜滑濉姞浜嗙紦瀛樼害鏉熴傜紦瀛樼害鏉熷厑璁擱殣寮忔垨鏄懼紡鍦版爣璁頒竴涓猺esponse涓殑鏁版嵁錛岃繖鏍峰氨璧嬩簣浜嗗鎴風緙撳瓨 response鏁版嵁鐨勫姛鑳斤紝榪欐牱灝卞彲浠ヤ負浠ュ悗鐨剅equest鍏辯敤緙撳瓨鐨勬暟鎹紝閮ㄥ垎鎴栧叏閮ㄧ殑娑堥櫎涓閮ㄥ垎浜や簰錛屽鍔犱簡緗戠粶鐨勬晥鐜囥備絾鏄敤浜庡鎴風緙撳瓨浜嗕俊 鎭紝涔熷氨鍚屾椂澧炲姞浜嗗鎴風涓庢湇鍔″櫒鏁版嵁涓嶄竴鑷寸殑鍙兘錛屼粠鑰岄檷浣庝簡鍙潬鎬с?/div>

B/S鏋舵瀯鐨勪紭鐐規槸鍏墮儴緗查潪甯告柟渚匡紝浣嗗湪鐢ㄦ埛浣撻獙鏂歸潰鍗翠笉鏄緢鐞嗘兂銆備負浜嗘敼鍠勮繖縐嶆儏鍐碉紝鎴戜滑寮曞叆浜哛EST銆?/p>

REST鍦ㄥ師鏈夌殑鏋舵瀯涓婂鍔犱簡涓変釜鏂拌鑼冿細緇熶竴鎺ュ彛錛屽垎灞傜郴緇熷拰鎸夐渶浠g爜銆?/p>

緇熶竴鎺ュ彛

  • REST 鏋舵瀯椋庢牸鐨勬牳蹇冪壒寰佸氨鏄己璋冪粍浠朵箣闂存湁涓涓粺涓鐨勬帴鍙o紝榪欒〃鐜板湪REST涓栫晫閲岋紝緗戠粶涓婃墍鏈夌殑浜嬬墿閮借鎶借薄涓鴻祫婧愶紝鑰孯EST灝辨槸閫氳繃閫氱敤鐨勯摼鎺ュ櫒鎺ュ彛瀵? 璧勬簮榪涜鎿嶄綔銆傝繖鏍瘋璁$殑濂藉鏄繚璇佺郴緇熸彁渚涚殑鏈嶅姟閮芥槸瑙h︾殑錛屾瀬澶х殑綆鍖栦簡緋葷粺錛屼粠鑰屾敼鍠勪簡緋葷粺鐨勪氦浜掓у拰鍙噸鐢ㄦс傚茍涓擱EST閽堝Web鐨勫父瑙佹儏鍐? 鍋氫簡浼樺寲錛屼嬌寰桼EST鎺ュ彛琚璁′負鍙互楂樻晥鐨勮漿縐誨ぇ綺掑害鐨勮秴濯掍綋鏁版嵁錛岃繖涔熷氨瀵艱嚧浜哛EST鎺ュ彛瀵瑰叾瀹冪殑鏋舵瀯騫朵笉鏄渶浼樼殑銆?/div>

鍒嗗眰緋葷粺

  • 鍒嗗眰緋葷粺瑙勫垯鐨勫姞鍏ユ彁楂樹簡鍚勭灞傛涔嬮棿鐨勭嫭绔嬫э紝涓烘暣涓郴緇熺殑澶嶆潅鎬ц緗簡杈圭晫錛岄氳繃灝佽閬楃暀鐨勬湇鍔★紝浣挎柊鐨勬湇鍔″櫒鍏嶅彈閬楃暀瀹㈡埛绔殑褰卞搷錛岃繖涔熷氨鎻愰珮浜嗙郴緇熺殑鍙幾緙╂с?/div>

鎸夐渶浠g爜

  • REST鍏佽瀵瑰鎴風鍔熻兘榪涜鎵╁睍銆傛瘮濡傦紝閫氳繃涓嬭澆騫舵墽琛宎pplet鎴栬剼鏈艦寮忕殑浠g爜錛屾潵鎵╁睍瀹㈡埛绔姛鑳姐備絾榪欏湪鏀瑰杽緋葷粺鍙墿灞曟х殑鍚屾椂錛屼篃闄嶄綆浜嗗彲瑙佹с傛墍浠ュ畠鍙槸REST鐨勪竴涓彲閫夌殑綰︽潫銆?/div>

REST鐨勮璁″噯鍒?/strong>

REST鏋舵瀯鏄拡瀵筗eb搴旂敤鑰岃璁$殑錛屽叾鐩殑鏄負浜嗛檷浣庡紑鍙戠殑澶嶆潅鎬э紝鎻愰珮緋葷粺鐨勫彲浼哥緝鎬с俁EST鎻愬嚭浜嗗涓嬭璁″噯鍒欙細

    1. 緗戠粶涓婄殑鎵鏈変簨鐗╅兘琚娊璞′負璧勬簮錛坮esource錛夛紱
    2. 姣忎釜璧勬簮瀵瑰簲涓涓敮涓鐨勮祫婧愭爣璇嗙錛坮esource identifier錛夛紱
    3. 閫氳繃閫氱敤鐨勮繛鎺ュ櫒鎺ュ彛錛坓eneric connector interface錛夊璧勬簮榪涜鎿嶄綔錛?/div>
    4. 瀵硅祫婧愮殑鍚勭鎿嶄綔涓嶄細鏀瑰彉璧勬簮鏍囪瘑絎︼紱
    5. 鎵鏈夌殑鎿嶄綔閮芥槸鏃犵姸鎬佺殑錛坰tateless錛夈?/div>

REST涓殑璧勬簮鎵鎸囩殑涓嶆槸鏁版嵁錛岃屾槸鏁版嵁鍜岃〃鐜板艦寮忕殑緇勫悎錛屾瘮濡?#8220;鏈鏂拌闂殑10浣嶄細鍛?#8221;鍜?#8220;鏈媧昏穬鐨?0涓轟細鍛?#8221;鍦?鏁版嵁涓婂彲鑳芥湁閲嶅彔鎴栬呭畬鍏ㄧ浉鍚岋紝鑰?鐢變簬浠栦滑鐨勮〃鐜板艦寮忎笉鍚岋紝鎵浠ヨ褰掍負涓嶅悓鐨勮祫婧愶紝榪欎篃灝辨槸涓轟粈涔圧EST鐨勫叏鍚嶆槸Representational State Transfer鐨勫師鍥犮傝祫婧愭爣璇嗙灝辨槸URI(Uniform Resource Identifier)錛屼笉綆℃槸鍥劇墖錛學ord榪樻槸瑙嗛鏂囦歡錛岀敋鑷沖彧鏄竴縐嶈櫄鎷熺殑鏈嶅姟錛屼篃涓嶇浣犳槸xml鏍煎紡,txt鏂囦歡鏍煎紡榪樻槸鍏跺畠鏂囦歡鏍煎紡錛屽叏閮ㄩ氳繃 URI瀵硅祫婧愯繘琛屽敮涓鐨勬爣璇嗐?/p>

REST鏄熀浜嶩ttp鍗忚鐨勶紝浠諱綍瀵硅祫婧愮殑鎿嶄綔琛屼負閮芥槸閫氳繃Http鍗忚鏉ュ疄鐜般備互寰鐨刉eb寮鍙戝ぇ澶氭暟鐢ㄧ殑閮芥槸 Http鍗忚涓殑GET鍜孭OST鏂? 娉曪紝瀵瑰叾浠栨柟娉曞緢灝戜嬌鐢紝榪欏疄闄呬笂鏄洜涓哄Http鍗忚璁よ瘑鐗囬潰鐨勭悊瑙i犳垚鐨勩侶ttp涓嶄粎浠呮槸涓涓畝鍗曠殑榪愯澆鏁版嵁鐨勫崗璁紝鑰屾槸涓涓叿鏈変赴瀵屽唴娑電殑緗戠粶杞? 浠剁殑鍗忚銆備粬涓嶄粎浠呰兘瀵逛簰鑱旂綉璧勬簮榪涜鍞竴瀹氫綅錛岃屼笖榪樿兘鍛婅瘔鎴戜滑濡備綍瀵硅璧勬簮榪涜鎿嶄綔銆侶ttp鎶婂涓涓祫婧愮殑鎿嶄綔闄愬埗鍦?涓柟娉曚互鍐咃細GET, POST,PUT鍜孌ELETE錛岃繖姝f槸瀵硅祫婧怌RUD鎿嶄綔鐨勫疄鐜般傜敱浜庤祫婧愬拰URI鏄竴涓瀵瑰簲鐨勶紝鎵ц榪欎簺鎿嶄綔鐨勬椂鍊橴RI鏄病鏈夊彉鍖栫殑錛岃繖鍜屼互寰鐨? Web寮鍙戞湁寰堝ぇ鐨勫尯鍒傛鐢變簬榪欎竴鐐癸紝鏋佸ぇ鐨勭畝鍖栦簡Web寮鍙戯紝涔熶嬌寰桿RI鍙互琚璁℃垚鏇翠負鐩磋鐨勫弽鏄犺祫婧愮殑緇撴瀯錛岃繖縐峌RI鐨勮璁¤縐頒綔 RESTful鐨刄RI銆傝繖浣嶅紑鍙戜漢鍛樺紩鍏ヤ簡涓縐嶆柊鐨勬濈淮鏂瑰紡錛氶氳繃URL鏉ヨ璁$郴緇熺粨鏋勩傚綋鐒朵簡錛岃繖縐嶈璁℃柟寮忓涓浜涚壒瀹氭儏鍐典篃鏄笉閫傜敤鐨勶紝涔熷氨鏄涓? 鏄墍鏈夌殑URI閮藉彲浠ESTful鐨勩?/p>

REST 涔嬫墍浠ュ彲浠ユ彁楂樼郴緇熺殑鍙幾緙╂э紝灝辨槸鍥犱負瀹冭姹傛墍鏈夌殑鎿嶄綔閮芥槸鏃犵姸鎬佺殑銆傜敱浜庢病鏈変簡涓婁笅鏂?Context)鐨勭害鏉燂紝鍋氬垎甯冨紡鍜岄泦緹ょ殑鏃跺欏氨鏇翠負綆鍗曪紝涔? 鍙互璁╃郴緇熸洿涓烘湁鏁堢殑鍒╃敤緙撳啿姹?Pool錛夈傚茍涓旂敱浜庢湇鍔″櫒绔笉闇瑕佽褰曞鎴風鐨勪竴緋誨垪璁塊棶錛屼篃鍑忓皯浜嗘湇鍔″櫒绔殑鎬ц兘銆?/p>

浣跨敤REST鏋舵瀯

瀵逛簬寮鍙戜漢鍛樻潵 璇達紝鍏沖績鐨勬槸濡備綍浣跨敤REST鏋舵瀯錛岃繖閲屾垜浠潵綆鍗曡皥璋堣繖涓棶棰樸俁EST涓嶄粎浠呮槸涓縐嶅喘鏂扮殑鏋舵瀯錛屽畠甯︽潵鐨勬洿鏄竴縐嶅叏鏂扮殑Web寮鍙戣繃紼嬩腑鐨勬濈淮鏂瑰紡錛? 閫氳繃URL鏉ヨ璁$郴緇熺粨鏋勩傚湪REST涓紝鎵鏈夌殑URL閮藉搴旂潃璧勬簮錛屽彧瑕乁RL鐨勮璁℃槸鑹ソ鐨勶紝閭d箞鍏跺憟鐜扮殑緋葷粺緇撴瀯涔熷氨鏄壇濂界殑銆傝繖鐐瑰拰TDD (Test Driven Development)寰堢浉浼鹼紝浠栨槸閫氳繃嫻嬭瘯鐢ㄤ緥鏉ヨ璁$郴緇熺殑鎺ュ彛錛屾瘡涓涓祴璇曠敤渚嬮兘琛ㄧず涓緋誨垪鐢ㄦ埛鐨勯渶姹傘傚紑鍙戜漢鍛樹笉闇瑕佷竴寮濮嬪氨緙栧啓鍔熻兘錛岃屽彧闇瑕? 鎶婇渶瑕佸疄鐜扮殑鍔熻兘閫氳繃嫻嬭瘯鐢ㄤ緥鐨勫艦寮忚〃鐜板嚭鏉ュ嵆鍙傝繖涓拰REST涓氳繃URL璁捐緋葷粺緇撴瀯鐨勬柟寮忕被浼鹼紝鎴戜滑鍙渶瑕佹牴鎹渶姹傝璁″嚭鍚堢悊鍦癠RL錛岃繖浜? URL涓嶄竴瀹氶潪瑕侀摼鎺ュ埌鎸囧畾鐨勯〉闈㈡垨鑰呭畬鎴愪竴浜涜涓猴紝鍙瀹冧滑鑳藉鐩磋鐨勮〃鐜板嚭緋葷粺鐨勭敤鎴鋒帴鍙c傛牴鎹繖浜沀RL錛屾垜浠氨鍙互鏂逛究鐨勮璁$郴緇熺粨鏋勩備粠 REST鏋舵瀯鐨勬蹇典笂鏉ョ湅錛屾墍鏈夎兘澶熻鎶借薄鎴愯祫婧愮殑涓滆タ閮藉彲浠ヨ鎸囧畾涓轟竴涓猆RL錛岃屽紑鍙戜漢鍛樻墍闇瑕佸仛鐨勫伐浣滃氨鏄浣曡兘鎶婄敤鎴烽渶姹傛娊璞′負璧勬簮錛屼互鍙婂浣曟娊 璞$殑綺劇‘銆傚洜涓哄璧勬簮鎶借薄鐨勮秺涓虹簿紜紝瀵筊EST鐨勫簲鐢ㄦ潵璇村氨瓚婂ソ銆傝繖涓拰浼犵粺MVC寮鍙戞ā寮忎腑鍩轟簬Action鐨勬濇兂宸埆灝遍潪甯稿ぇ銆傝璁¤壇濂界殑URL錛? 涓嶄絾瀵逛簬寮鍙戜漢鍛樻潵璇村彲浠ユ洿鏄庣‘鐨勮璇嗙郴緇熺粨鏋勶紝瀵逛嬌鐢ㄨ呮潵璇翠篃鏂逛究璁板繂鍜岃瘑鍒祫婧愶紝鍥犱負URL瓚沖綆鍗曞拰鏈夋剰涔夈傛寜鐓т互寰鐨勮璁℃ā寮忥紝寰堝URL鍚庨潰閮? 鏄竴鍫嗗弬鏁幫紝瀵逛簬浣跨敤鑰呮潵璇翠篃鏄緢涓嶆柟渚跨殑銆?/p>

鏃㈢劧REST榪? 涔堝ソ鐢紝閭d箞鏄笉鏄墍鏈夌殑Web搴旂敤閮借兘閲囧彇姝ょ鏋舵瀯鍛紵絳旀鏄惁瀹氱殑銆傛垜浠煡閬擄紝鐩村埌鐜板湪涓烘錛孧VC(Model-View-Controller) 妯″紡渚濈劧鏄疻eb寮鍙戞渶鏅亶鐨勬ā寮忥紝緇濆ぇ澶氭暟鐨勫叕鍙稿拰寮鍙戜漢鍛橀兘閲囧彇姝ょ鏋舵瀯鏉ュ紑鍙慦eb搴旂敤錛屽茍涓斿叾鎬濈淮鏂瑰紡涔熷仠鐣欎簬姝ゃ侻VC妯″紡鐢辨暟鎹紝瑙嗗浘鍜屾帶鍒? 鍣ㄦ瀯鎴愶紝閫氳繃浜嬩歡(Event)瑙﹀彂Controller鏉ユ敼鍙楳odel鍜孷iew銆傚姞涓奧ebwork,Struts絳夊紑婧愭鏋剁殑鍔犲叆錛孧VC寮鍙戞ā 寮忓凡緇忕浉褰撴垚鐔燂紝鍏舵濇兂鏍規湰灝辨槸鍩轟簬Action鏉ラ┍鍔ㄣ備粠寮鍙戜漢鍛樿搴︿笂鏉ヨ錛岃錘鐒舵帴鍙椾竴涓柊鐨勬灦鏋勪細甯︽潵椋庨櫓錛屽叾涓殑涓嶇‘瀹氬洜绱犲お澶氥傚茍涓擱EST鏂? 鐨勬濈淮鏂瑰紡鏄妸鎵鏈夌敤鎴烽渶姹傛娊璞′負璧勬簮錛岃繖鍦ㄥ疄闄呭紑鍙戜腑鏄瘮杈冮毦鍋氬埌鐨勶紝鍥犱負騫朵笉鏄墍鏈夌殑鐢ㄦ埛闇姹傞兘鑳借鎶借薄涓鴻祫婧愶紝榪欐牱涔熷氨鏄涓嶆槸鏁翠釜緋葷粺鐨勭粨鏋勯兘鑳? 閫氳繃REST鐨勬潵琛ㄧ幇銆傛墍浠ュ湪寮鍙戜腑錛屾垜浠渶瑕佹牴鎹互涓?鐐規潵鍦≧EST鍜孧VC涓仛鍑洪夋嫨銆傛垜浠涓烘瘮杈冨ソ鐨勫姙娉曟槸娣風敤REST鍜孧VC錛屽洜涓鴻繖閫傚悎緇? 澶у鏁扮殑Web搴旂敤寮鍙戯紝寮鍙戜漢鍛樺彧闇瑕佸姣旇緝瀹規槗鑳藉鎶借薄涓鴻祫婧愮殑鐢ㄦ埛闇姹傞噰鍙朢EST鐨勫紑鍙戞ā寮忥紝鑰屽鍏跺畠闇姹傞噰鍙朚VC寮鍙戝嵆鍙傝繖閲岄渶瑕佹彁鍒扮殑灝? 鏄疪OR(Ruby on Rails)妗嗘灦錛岃繖鏄竴涓熀浜嶳uby璇█鐨勮秺鏉ヨ秺嫻佽鐨刉eb寮鍙戞鏋訛紝瀹冩瀬澶х殑鎻愰珮浜哤eb寮鍙戠殑閫熷害銆傛洿涓洪噸瑕佺殑鏄紝ROR(浠?.2鐗堟湰璧?妗? 鏋舵槸絎竴涓紩鍏EST鍋氫負鏍稿績鎬濇兂鐨刉eb寮鍙戞鏋訛紝瀹冩彁渚涗簡瀵筊EST鏈濂界殑鏀寔錛屼篃鏄綋浠婃渶鎴愬姛鐨勫簲鐢≧EST鐨刉eb寮鍙戞鏋躲傚疄闄呬笂錛孯OR鐨? REST瀹炵幇灝辨槸REST鍜孧VC娣風敤錛屽紑鍙戜漢鍛橀噰鐢≧OR妗嗘灦錛屽彲浠ユ洿蹇洿濂界殑鏋勫緩Web搴旂敤銆?/p>

瀵瑰紑鍙戜漢鍛樻潵璇達紝REST涓嶄粎浠呭湪Web寮鍙戜笂璐$尞浜嗚嚜宸辯殑鍔涢噺錛屽悓鏃朵篃璁╂垜浠鍒頒簡濡備綍鎶婅蔣浠跺伐紼嬪師鍒欑郴緇熷湴搴旂敤浜庡涓涓湡瀹炶蔣浠剁殑璁捐鍜岃瘎浼頒笂



zhb8015 2012-06-04 16:38 鍙戣〃璇勮
]]>xfire 涓巗pring瀹屾暣闆嗘垚瀹炰緥(杞?http://m.tkk7.com/zhb8015/articles/378208.htmlzhb8015zhb8015Tue, 15 May 2012 09:42:00 GMThttp://m.tkk7.com/zhb8015/articles/378208.htmlhttp://m.tkk7.com/zhb8015/comments/378208.htmlhttp://m.tkk7.com/zhb8015/articles/378208.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/378208.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/378208.html
棣栧厛鎵撳紑Myeclipse8.x浠ヤ笂鐗堟湰..鍥犱負鎴戣繖閲屽叡浜偅浜泋fire 欏圭洰鎵闇瑕佺殑jar閮芥槸Myeclipse鑷甫娣誨姞鐨勶紝鎵浠ヨ姹傚ぇ瀹朵紮鍑嗗濂絤yeclipse8.x鎴栬呮洿楂樼増鏈殑..榪欓噷鏄痵pring2.0涓巟fire1.2鏁村悎..搴熻瘽灝戣..杞姝d紶..

 

1.鎵撳紑Myeclipse--->new project-->欏圭洰鍚嶉殢渚垮惂..鏈濂芥槸鏈夋剰涔夌殑鍚嶇О..鐪嬭搗鏉ユ瘮杈冭垝鏈?.


2--閰嶇疆web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


  <context-param>

   <param-name>contextConfigLocation</param-name>

   <param-value>classpath:applicationContext.xml,classpath:org/codehaus/xfire/spring/xfire.xml</param-value>

  </context-param>


<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>


   <listener>

<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

</listener>

  <servlet>

    <servlet-name>XFireServlet</servlet-name>

    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>

    <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>XFireServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

 


3.閰嶇疆applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:jee="http://www.springframework.org/schema/jee"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans

 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

 http://www.springframework.org/schema/aop

 http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

 http://www.springframework.org/schema/tx

 http://www.springframework.org/schema/tx/spring-tx-2.0.xsd

 http://www.springframework.org/schema/jee

 http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"

 default-autowire="byName" default-lazy-init="true"

 >

 <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>

 <import resource="xfire-servlet.xml"/>

</beans>

 

 

 

 

4.閰嶇疆xfire-servlet.xml

 

涓轟簡涓嶇粰澶у浼欏洶鎵?鎵浠ユ垜榪欓噷鐢ㄩ偅涓氨鎵撳紑閭d釜閰嶇疆..

 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"

"http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>

<!-- 

<bean id="HellWorldSimple" class="org.codehaus.xfire.spring.ServiceBean">

<property name="name">

<value>HelloWorldSimple</value>

</property>

<property name="namespace">

<value>http://service.core.xfire.com</value>

</property>

<property name="serviceClass">

<value>com.xfire.core.service.IHelloWorld</value>

</property>

<property name="serviceBean">

<ref bean="HellWorldSimple"/>

</property>

</bean>

-->

<!-- 

  <bean id="MyHandle" class="org.codehaus.xfire.spring.ServiceBean">

<property name="name">

<value>MyHandle</value>

</property>

<property name="namespace">

<value>http://service.core.xfire.com</value>

</property>

<property name="serviceClass">

<value>com.xfire.core.handler.MyHandlerImpl</value>

</property>

<property name="serviceBean">

<ref bean="MyHandle"/>

</property>

</bean>

 -->



<bean id="UserInfoService" class="org.codehaus.xfire.spring.ServiceBean">

<property name="name">

<value>UserInfo</value>

</property>

<property name="namespace">

<value>http://service.core.xfire.com/UserInfoService</value>

</property>

<property name="serviceClass">

<value>com.xfire.core.service.IUserInfoService</value>

</property>

<property name="serviceBean">

<ref bean="UserInfoService"/>

</property>

</bean>

<!--  

   <bean id="ApplictionException" class="org.codehaus.xfire.spring.ServiceBean">

<property name="name">

<value>ApplictionException</value>

</property>


<property name="namespace">

<value>http://service.core.xfire.com/IMyExceptionSevice</value>

</property>

<property name="serviceClass">

<value>com.xfire.core.service.IMyExceptionSevice</value>

</property>

<property name="serviceBean">

<ref bean="ApplictionException"/>

</property>

</bean>

-->

 

 

 

 <!--  

   <bean id="IServiceMap" class="org.codehaus.xfire.spring.ServiceBean">

<property name="name">

<value>AddressService</value>

</property>


<property name="namespace">

<value>http://service.core.xfire.com/IServiceMap</value>

</property>

<property name="serviceClass">

<value>com.xfire.core.service.IServiceMap</value>

</property>

<property name="serviceBean">

<ref bean="IServiceMap"/>

</property>

</bean>

-->

 

</beans>


 

 

5.xfire-servlet.xml閰嶇疆

 

 

<?xml version="1.0" encoding="UTF-8"?>

<beans>

<!--

    鍦ㄦ病鏁村悎spring涔嬪墠鐨剎fire鏄繖鏍風殑閰嶇疆

  褰撹鏁村悎spring涔嬪悗鐨勮繖鍙ヤ唬鐮佸鍒跺埌service 鑺傜偣

  xmlns="http://xfire.codehaus.org/config/1.0"

  <beans xmlns="http://xfire.codehaus.org/config/1.0">

 -->

<service xmlns="http://xfire.codehaus.org/config/1.0">


 

 <name>UserInfo</name>

 <namespace>http://service.core.xfire.com</namespace>

 <serviceClass>com.xfire.core.service.IUserInfoService</serviceClass>

 <implementationClass>com.xfire.core.service.impl.UserInfoServiceImpl

 </implementationClass>

 <scope>request</scope>

 

 

<!-- 

<name>HelloWorldSimple</name>

<namespace>http://service.core.xfire.com</namespace>

<serviceClass>com.xfire.core.service.IHelloWorld</serviceClass>

<implementationClass>com.xfire.core.service.impl.HelloWorldImpl</implementationClass>

<style>wrapped</style>

<use>literal</use>

<scope>request</scope>

-->

<!--  

<name>MyHandle</name>

<namespace>http://service.core.xfire.com</namespace>

<serviceClass>com.xfire.core.handler.IMyHandler</serviceClass>

<implementationClass>com.xfire.core.handler.MyHandlerImpl</implementationClass>

<scope>application</scope>

 -->

 <!-- 

<name>ServiceMap</name>

<namespace>http://service.core.xfire.com</namespace>

<serviceClass>com.xfire.core.service.IServiceMap</serviceClass>

<implementationClass>com.xfire.core.service.impl.ServiceMapImpl

</implementationClass>

<scope>request</scope>

 -->

 

 

<!-- 

<name>ApplictionException</name>

<namespace>http://service.core.xfire.com</namespace>

<serviceClass>com.xfire.core.service.IMyExceptionSevice</serviceClass>

<implementationClass>com.xfire.core.service.impl.MyExceptionSeviceImpl</implementationClass>

<scope>request</scope>

-->

 

</service>

</beans>

 

 


瀹炵幇浠g爜..

棣栧厛鏂板緩涓涓疄浣撶被UseInfor

package com.xfire.core.entity;

 

import java.io.Serializable;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

/**

 *@author jilongliang

 *@Date 2012-2-29

 */

@SuppressWarnings("all")

public class UserInfo implements Serializable {

 

private Integer identifier;

 

private String address;

private String city;

private String proivice;

 

public Integer getIdentifier() {

return identifier;

}

 

public void setIdentifier(Integer identifier) {

this.identifier = identifier;

}

 

public String getAddress() {

return address;

}

 

public void setAddress(String address) {

this.address = address;

}

 

public String getCity() {

return city;

}

 

public void setCity(String city) {

this.city = city;

}

 

public String getProivice() {

return proivice;

}

 

public void setProivice(String proivice) {

this.proivice = proivice;

}

 

public String getCountry() {

return country;

}

 

public void setCountry(String country) {

this.country = country;

}

 

public String getPostCode() {

return postCode;

}

 

public void setPostCode(String postCode) {

this.postCode = postCode;

}

 

public String[] getArrary() {

return arrary;

}

 

public void setArrary(String[] arrary) {

this.arrary = arrary;

}

 

public List<Integer> getList() {

return list;

}

 

public void setList(List<Integer> list) {

this.list = list;

}

 

public Map<Integer, InnerClass> getMap() {

return map;

}

 

public void setMap(Map<Integer, InnerClass> map) {

this.map = map;

}

 

public boolean isExist() {

return isExist;

}

 

public void setExist(boolean isExist) {

this.isExist = isExist;

}

 

public InnerClass getInner() {

return inner;

}

 

public void setInner(InnerClass inner) {

this.inner = inner;

}

 

private String country;

private String postCode;

private String[] arrary;

private List<Integer> list;

 

private Map<Integer, InnerClass> map;

 

private boolean isExist;

private InnerClass inner;

 

public UserInfo() {

 

list = new ArrayList<Integer>();

list.add(1);

list.add(2);

list.add(3);

 

map = new HashMap<Integer, InnerClass>();

map.put(1, new InnerClass("a"));

map.put(2, new InnerClass("b"));

map.put(3, new InnerClass("c"));

 

inner = new InnerClass();

inner.setInnerName("鏈嶅姟鍣ㄥ湴鍧: Address InnerClass");

 

}

 

@Override

public String toString() {

return "Address [address=" + address + ", arrary="

+ Arrays.toString(arrary) + ", city=" + city + ", country="

+ country + ", identifier=" + identifier + ", inner=" + inner

+ ", isExist=" + isExist + ", list=" + list + ", map=" + map

+ ", postCode=" + postCode + ", proivice=" + proivice + "]";

}

 

}



----鍐呯疆瀹炰綋綾?/span>
package com.xfire.core.entity;

import java.io.Serializable;

/**
 *@Project xfire
 *@author jilongliang
 *@Date 2012-2-29
 *@Class InnerClass.java
 */
@SuppressWarnings("all")
public class InnerClass implements Serializable {

private String innerName = "static InnerClass";

public String getInnerName() {
return innerName;
}

public void setInnerName(String innerName) {
this.innerName = innerName;
}

public InnerClass() {
}

public InnerClass(String innerName) {
super();
this.innerName = innerName;

}
}



鍏舵涓涓帴鍙g被:
package com.xfire.core.service;

import java.util.List;

import com.xfire.core.entity.UserInfo;

/**
 *@author jilongliang
 *@Date 2012-2-29
 */
public interface IUserInfoService {
public List<UserInfo> getAddressList();

public List<UserInfo> setAddresses(List<UserInfo> list);
}



鐒跺悗鏂板緩涓涓疄鐜扮被鍘誨疄鐜版帴鍙?/span>

package com.xfire.core.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.xfire.core.entity.UserInfo;
import com.xfire.core.service.IUserInfoService;

/**
 *@author jilongliang
 *@Date 2012-2-29
 */
public class UserInfoServiceImpl implements IUserInfoService {

private int requestCount = 0;

public List<UserInfo> getAddressList() {
requestCount++;
System.out.println("requestCount" + requestCount);
List<UserInfo> listAdd = new ArrayList<UserInfo>();
UserInfo address = new UserInfo();
address.setIdentifier(1);
address.setCountry("涓湅");
address.setProivice("寤f澅鐪?);
address.setCity("闄芥睙");
address.setAddress("寤f澅闄芥槬");
address.setPostCode("1111111");
address.setExist(false);
address.setArrary(new String[] { "22", "23", "24" });
listAdd.add(address);

address.setIdentifier(2);
address.setCountry("涓湅");
address.setProivice("寤f澅鐪?);
address.setCity("闄芥睙");
address.setAddress("寤f澅闄芥槬");
address.setPostCode("1111111");
address.setExist(false);
address.setArrary(new String[] { "a", "b", "c" });
listAdd.add(address);

return listAdd;
}

/**
 * 
 * @param list
 * @return
 */
public List<UserInfo> setAddresses(List<UserInfo> list) {
requestCount++;
System.out.println("requestCount" + requestCount);
return list;
}

}



-----瀹㈡埛绔?/span>

package com.xfire.core.client;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import com.xfire.core.entity.UserInfo;
import com.xfire.core.service.IUserInfoService;

/**
 *@author jilongliang
 *@Date 2012-3-5
 * 
 */
public class UserInfoClient {

public static void main(String[] args) {
getServiceList();
setServiceList();
}

static String url = "http://localhost:8081/xfire/services/UserInfo";

/**
 * 
 */
public static void getServiceList() {
Service service = new ObjectServiceFactory()
.create(IUserInfoService.class);

try {
IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory()
.create(service, url);
List<UserInfo> list = (ArrayList<UserInfo>) iAddressService
.getAddressList();

System.out.println("涓鍏卞灝戞潯鏁版嵁錛? + list.size());

for (Iterator<UserInfo> iter = list.iterator(); iter.hasNext();) {

UserInfo a = iter.next();

System.out.println(a);
}

} catch (MalformedURLException e) {
e.printStackTrace();
}
}

public static void setServiceList() {
Service service = new ObjectServiceFactory()
.create(IUserInfoService.class);

try {
IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory()
.create(service, url);

List<UserInfo> listAdd = new ArrayList<UserInfo>();
UserInfo address = new UserInfo();
address.setIdentifier(1);
address.setCountry("涓湅");
address.setProivice("寤f澅鐪?);
address.setCity("闄芥睙");
address.setAddress("寤f澅闄芥槬");
address.setPostCode("1111111");
address.setExist(false);
address.setArrary(new String[] { "22", "23", "24" });
listAdd.add(address);

address.setIdentifier(2);
address.setCountry("涓湅");
address.setProivice("寤f澅鐪?);
address.setCity("闄芥睙");
address.setAddress("寤f澅闄芥槬");
address.setPostCode("1111111");
address.setExist(false);
address.setArrary(new String[] { "a", "b", "c" });
listAdd.add(address);

List<UserInfo> returnAdd = iAddressService.setAddresses(listAdd);

System.out.println("鎬繪暟:" + returnAdd);

for (Iterator<UserInfo> it = returnAdd.iterator(); it.hasNext();) {
UserInfo address2 = it.next();

System.out.println(address2);
}

} catch (MalformedURLException e) {
e.printStackTrace();
}

}
}


鍥捐В----

 




 

 

 

 

 

 

 

 

 

 

 

 

瀛愪功涓嬭澆http://download.csdn.net/detail/l_ji_l/4116804

婧愪唬鐮佷笅杞斤細http://download.csdn.net/detail/l_ji_l/4116788



zhb8015 2012-05-15 17:42 鍙戣〃璇勮
]]>
java.lang.IllegalStateException: Could not find valid implementation for: 2.0http://m.tkk7.com/zhb8015/articles/377905.htmlzhb8015zhb8015Fri, 11 May 2012 06:42:00 GMThttp://m.tkk7.com/zhb8015/articles/377905.htmlhttp://m.tkk7.com/zhb8015/comments/377905.htmlhttp://m.tkk7.com/zhb8015/articles/377905.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/377905.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/377905.htmlmyeclipse6.5,xfire1.2.6寮鍙憌ebservice鎶ラ敊錛?/pre>
鎶ラ敊鍘熷洜錛歺fire鑷甫spring-1.2.6.jar 涓巗pring.jar鐗堟湰鍐茬獊錛屽垹闄や竴涓嵆鍙?
 
 
java.lang.IllegalStateException: Could not find valid implementation for: 2.0
	org.apache.xbean.spring.context.impl.XBeanHelper.createBeanDefinitionReader(XBeanHelper.java:48)
	org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:74)
	org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54)
	org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:662)

 

root cause

java.lang.reflect.InvocationTargetException
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	org.apache.xbean.spring.context.impl.XBeanHelper.createBeanDefinitionReader(XBeanHelper.java:46)
	org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:74)
	org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54)
	org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:662)

 

root cause

java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlBeanDefinitionReader.setValidationMode(I)V
	org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.<init>(XBeanXmlBeanDefinitionReader.java:58)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	org.apache.xbean.spring.context.impl.XBeanHelper.createBeanDefinitionReader(XBeanHelper.java:46)
	org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:74)
	org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86)
	org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54)
	org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:662)


zhb8015 2012-05-11 14:42 鍙戣〃璇勮
]]>
鐞嗚ВAXIOMhttp://m.tkk7.com/zhb8015/articles/377311.htmlzhb8015zhb8015Thu, 03 May 2012 10:16:00 GMThttp://m.tkk7.com/zhb8015/articles/377311.htmlhttp://m.tkk7.com/zhb8015/comments/377311.htmlhttp://m.tkk7.com/zhb8015/articles/377311.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/377311.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/377311.html
銆銆AXIOM 榪樹笉鏄彟涓縐嶅璞℃ā鍨嬨傚畠鏈夌潃鏄庣‘鐨勮璁$洰鏍囷細澶у箙鎻愬崌 Apache 涓嬩竴浠?SOAP 鍗忚鏍?Axis 2 鐨勬ц兘銆傜粨鏋滈犲氨浜嗕笉鍚屼簬鍏朵粬瀵硅薄妯″瀷鐨?AXIOM錛堜篃縐頒負 OM錛夛紝鍥犱負瀹冪獊鍑轟簡鏋勯犵殑杞誨瀷錛屽茍涓?浠呭綋闇瑕佺殑鏃跺欐墠寤虹珛銆傜敱浜庢槸杞誨瀷鐨勶紝瀹冨敖鍙兘鍦板噺杞誨緋葷粺璧勬簮鐨勫帇鍔涳紝鐗瑰埆鏄?CPU 鍜屽唴瀛樸傚悓鏃訛紝寤惰繜鏋勯犲張鍏佽鍦ㄥ叾浠栭儴鍒嗚繕娌℃湁瀹屾垚鐨勬椂鍊欎嬌鐢ㄦ爲鐨勪竴閮ㄥ垎銆侫XIOM 寮哄ぇ鐨勫歡榪熸瀯寤鴻兘鍔涙簮浜庡簳灞傜殑 Streaming API for XML (StAX) 瑙f瀽鍣ㄣ侫XIOM 鎻愪緵浜嗘墍鏈夎繖浜涚壒鎬э紝鍚屾椂騫曞悗鐨勫鏉傛у鐢ㄦ埛鏄忔槑鐨勩?
銆銆浣跨敤 XMLBench Document Model Benchmark 嫻嬭瘯鐨勭粨鏋滆〃鏄庯紝AXIOM 鐨勬ц兘鍜岀幇鏈夌殑楂樻ц兘瀵硅薄妯″瀷鐩稿綋銆備絾鏄?AXIOM 鐨勫唴瀛樺崰鐢ㄨ濂戒簬鐜版湁澶氭暟渚濋潬 SAX 鍜?鎴?DOM 杈撳叆杈撳嚭鐨勫璞℃ā鍨嬨傚洜姝ゅ浜?Web 鏈嶅姟寮曟搸鎴栧唴瀛樺彈闄愬埗璁懼榪欐牱鐨?XML 澶勭悊鍣紝AXIOM 鏄竴縐嶇悊鎯崇殑閫夋嫨錛屽畠鍙敤浜?
銆銆涓鑸殑 XML 澶勭悊錛屼絾鏄湁涓涓 SOAP 浼樺寲浜嗙殑鍙夊眰銆?

zhb8015 2012-05-03 18:16 鍙戣〃璇勮
]]>
axis2鏁欑▼錛堣漿錛?/title><link>http://m.tkk7.com/zhb8015/articles/377301.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Thu, 03 May 2012 09:07:00 GMT</pubDate><guid>http://m.tkk7.com/zhb8015/articles/377301.html</guid><wfw:comment>http://m.tkk7.com/zhb8015/comments/377301.html</wfw:comment><comments>http://m.tkk7.com/zhb8015/articles/377301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhb8015/comments/commentRss/377301.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhb8015/services/trackbacks/377301.html</trackback:ping><description><![CDATA[<div id="vf55f5l" class="blog_title"> <h3><a >Axis2 鏁欑▼</a> </h3> <h3><em class="actions"></em>(<a >http://zxs19861202.iteye.com/blog/630359</a></h3> <h3><a >http://zxs19861202.iteye.com/blog/635903</a>   鎵嬪伐鎵撳寘)</h3> <h3><a >WebService</a><a >Tomcat</a><a >Apache</a><a >嫻忚鍣?/a><a >Web</a></h3></div> <div class="v35z5j5" id="blog_content" class="blog_content"> <p>  Axis2<span>鏄竴濂楀喘鏂扮殑</span>WebService<span>寮曟搸錛岃鐗堟湰鏄</span>Axis1.x<span>閲嶆柊璁捐鐨勪駭鐗┿?/span>Axis2<span>涓嶄粎鏀寔</span>SOAP1.1<span>鍜?/span>SOAP1.2<span>錛岃繕闆嗘垚浜嗛潪甯告祦琛岀殑</span>REST WebService<span>錛屽悓鏃惰繕鏀寔</span>Spring<span>銆?/span>JSON<span>絳夋妧鏈傝繖浜涢兘灝嗗湪鍚庨潰鐨勭郴鍒楁暀紼嬩腑璁茶В銆傚湪鏈枃涓富瑕佷粙緇嶄簡濡備綍浣跨敤</span>Axis2<span>寮鍙戜竴涓笉闇瑕佷換浣曢厤緗枃浠剁殑</span>WebService<span>錛屽茍鍦ㄥ鎴風浣跨敤</span>Java<span>鍜?/span>C#<span>璋冪敤榪欎釜</span>WebService<span>銆?/span></p> <p><strong><span>涓銆?/span>Axis2</strong><strong><span>鐨勪笅杞藉拰瀹夎</span></strong></p> <p>    <span>璇昏呭彲浠ヤ粠濡備笅鐨勭綉鍧涓嬭澆</span>Axis2<span>鐨勬渶鏂扮増鏈細</span></p> <p>    <a >http://ws.apache.org/axis2/</a></p> <p>    <span>鍦ㄦ湰鏂囦嬌鐢ㄤ簡鐩墠</span>Axis2<span>鐨勬渶鏂扮増鏈?/span>1.4.1<span>銆傝鑰呭彲浠ヤ笅杞藉涓嬩袱涓?/span>zip<span>鍖咃細</span></p> <p>    axis2-1.4.1-bin.zip</p> <p>    axis2-1.4.1-war.zip</p> <p>    <span>鍏朵腑</span>axis2-1.4.1-bin.zip<span>鏂囦歡涓寘鍚簡</span>Axis2<span>涓墍鏈夌殑</span>jar<span>鏂囦歡</span>, axis2-1.4.1-war.zip<span>鏂囦歡鐢ㄤ簬灝?/span>WebService<span>鍙戝竷鍒?/span>Web<span>瀹瑰櫒涓?/span></p> <p>    <span>灝?/span>axis2-1.4.1-war.zip<span>鏂囦歡瑙e帇鍒扮浉搴旂殑鐩綍錛屽皢鐩綍涓殑</span>axis2.war<span>鏂囦歡鏀懼埌</span><Tomcat<span>瀹夎鐩綍</span>>\webapps<span>鐩綍涓紙鏈枃浣跨敤鐨?/span>Tomcat<span>鐨勭増鏈槸</span>6.x<span>錛夛紝騫跺惎鍔?/span>Tomcat<span>銆?/span></p> <p>    <span>鍦ㄦ祻瑙堝櫒鍦板潃鏍忎腑杈撳叆濡備笅鐨?/span>URL<span>錛?/span></p> <p>    <a href="http://localhost:8080/axis2/">http://localhost:8080/axis2/</a></p> <p>    <span>濡傛灉鍦ㄦ祻瑙堝櫒涓樉紺哄嚭濡傚浘</span>1<span>鎵紺虹殑欏甸潰錛屽垯琛ㄧず</span>Axis2<span>瀹夎鎴愬姛銆?br /></span></p> <div><br /><br />鍥?</div> <div><br /><img class="magplus" title="鐐瑰嚮鏌ョ湅鍘熷澶у皬鍥劇墖" alt="" src="http://dl.iteye.com/upload/attachment/228189/8361c97d-ea79-3b16-aaed-f6dba647ddf9.jpg" width="700" height="405" /><br /> <br /></div> <p><strong><span>浜屻佺紪鍐欏拰鍙戝竷WebService</span></strong></p> <p>  <span>瀵逛簬鐢?/span>Java<span>瀹炵幇鐨勬湇鍔$▼搴忕粰浜虹殑鍗拌薄灝辨槸闇瑕佽繘琛屽ぇ閲忕殑閰嶇疆錛屼笉榪囪繖涓鐐瑰湪</span>Axis2<span>涓皢琚粓緇撱傚湪</span>Axis2<span>涓笉闇瑕佽繘琛屼換浣曠殑閰嶇疆錛屽氨鍙互鐩存帴灝嗕竴涓畝鍗曠殑</span>POJO<span>鍙戝竷鎴?/span>WebService<span>銆傚叾涓?/span>POJO<span>涓墍鏈夌殑</span>public<span>鏂規硶灝嗚鍙戝竷鎴?/span>WebService<span>鏂規硶銆?/span></p> <p>    <span>涓嬮潰鎴戜滑鏉ュ疄鐜頒竴涓畝鍗曠殑</span>POJO<span>錛屼唬鐮佸涓嬶細</span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SimpleService<br />{<br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getGreeting(String name)<br />    {<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">浣犲ソ </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> name;<br />    }    <br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> getPrice()<br />    {<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> java.util.Random().nextInt(</span><span style="color: #000000">1000</span><span style="color: #000000">);<br />    }    <br />}<br /></span></div> <p> </p> <p>    <span>鍦?/span>SimpleService<span>綾諱腑鏈変袱涓柟娉曪紝鐢變簬榪欎袱涓柟娉曢兘鏄?/span>public<span>鏂規硶錛屽洜姝わ紝瀹冧滑閮藉皢浣滀負</span>WebService<span>鏂規硶琚彂甯冦?/span></p> <p>    <span>緙栬瘧</span>SimpleService<span>綾誨悗錛屽皢</span>SimpleService.class<span>鏂囦歡鏀懼埌</span><Tomcat<span>瀹夎鐩綍</span>>\webapps\axis2\WEB-INF\pojo<span>鐩綍涓紙濡傛灉娌℃湁</span>pojo<span>鐩綍錛屽垯寤虹珛璇ョ洰褰曪級銆傜幇鍦ㄦ垜浠凡緇忔垚鍔熷皢</span>SimpleService<span>綾誨彂甯冩垚浜?/span>WebService<span>銆傚湪嫻忚鍣ㄥ湴鍧鏍忎腑杈撳叆濡備笅鐨?/span>URL<span>錛?/span></p> <p><a href="http://localhost:8080/axis2/services/listServices">http://localhost:8080/axis2/services/listServices</a></p> <p>    <span>榪欐椂褰撳墠欏甸潰灝嗘樉紺烘墍鏈夊湪</span>Axis2<span>涓彂甯冪殑</span>WebService<span>錛屽鍥?/span>2<span>鎵紺恒?br /></span></p> <p> </p> <p>    <span>鍦ㄦ祻瑙堝櫒鍦板潃鏍忎腑杈撳叆濡備笅鐨勪袱涓?/span>URL<span>鏉ュ垎鍒祴璇?/span>getGreeting<span>鍜?/span>getPrice<span>鏂規硶錛?/span></p> <p><a href="http://localhost:8080/axis2/services/SimpleService/getGreeting?name=bill">http://localhost:8080/axis2/services/SimpleService/getGreeting?name=bill</a></p> <p><a href="http://localhost:8080/axis2/services/SimpleService/getPrice">http://localhost:8080/axis2/services/SimpleService/getPrice</a><br /><br />    <span>鍥?/span>3<span>鍜屽浘</span>4<span>鍒嗗埆鏄劇ず浜?/span>getGreeting<span>鍜?/span>getPrice<span>鏂規硶鐨勬祴璇曠粨鏋溿?br /></span></p> <p> </p> <p><span>鍥?  getGreeting鏂規硶鐨勬祴璇曠粨鏋?/span></p> <p><span><br /><img alt="" src="http://dl.iteye.com/upload/attachment/228193/d266b21e-4f1b-3413-997d-f1192eb0b5b5.jpg" /><br /> </span></p> <p> </p> <p> </p> <p><span>鍥?  getPrice鏂規硶鐨勬祴璇曠粨鏋?/span></p> <p><span><br /><img alt="" src="http://dl.iteye.com/upload/attachment/228195/f462cbcc-efa0-3cfa-a9de-9a13614c8c2f.jpg" /><br /> </span></p> <p> </p> <p>    <span>鍦ㄧ紪鍐欍佸彂甯冨拰嫻嬭瘯</span>0<span>閰嶇疆鐨?/span>WebService<span>鏃跺簲娉ㄦ剰濡備笅鍑犵偣錛?/span></p> <p><span>    </span>1. POJO<span>綾諱笉鑳戒嬌鐢?/span>package<span>鍏抽敭瀛楀0鏄庡寘銆?/span></p> <p><span>    </span>2. Axis2<span>鍦ㄩ粯璁ゆ儏鍐典笅鍙互鐑彂甯?/span>WebService<span>錛屼篃灝辨槸璇達紝灝?/span>WebService<span>鐨?/span>.class<span>鏂囦歡澶嶅埗鍒?/span>pojo<span>鐩綍涓椂錛?/span>Tomcat<span>涓嶉渶瑕侀噸鏂板惎鍔ㄥ氨鍙互鑷姩鍙戝竷</span>WebService<span>銆傚鏋滄兂鍙栨秷</span>Axis2<span>鐨勭儹鍙戝竷鍔熻兘錛屽彲浠ユ墦寮</span><Tomcat<span>瀹夎鐩綍</span>>\webapps\axis2\WEB-INF\conf\axis2.xml<span>錛屾壘鍒板涓嬬殑閰嶇疆浠g爜錛?/span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff"><</span><span style="color: #800000">parameter </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hotdeployment"</span><span style="color: #0000ff">></span><span style="color: #000000">true</span><span style="color: #0000ff"></</span><span style="color: #800000">parameter</span><span style="color: #0000ff">></span> </div> <p> </p> <p> </p> <p> </p> <p>    <span>灝?/span>true<span>鏀逛負</span>false<span>鍗沖彲銆傝娉ㄦ剰鐨勬槸錛?/span>Axis2<span>鍦ㄩ粯璁ゆ儏鍐典笅铏界劧鏄儹鍙戝竷錛屼絾騫朵笉鏄儹鏇存柊錛屼篃灝辨槸璇達紝涓鏃︽垚鍔熷彂甯冧簡</span>WebService<span>錛屽啀鎯蟲洿鏂拌</span>WebService<span>錛屽氨蹇呴』閲嶅惎</span>Tomcat<span>銆傝繖瀵逛簬寮鍙戜漢鍛樿皟璇?/span>WebService<span>闈炲父涓嶆柟渚匡紝鍥犳錛屽湪寮鍙?/span>WebService<span>鏃訛紝鍙互灝?/span>Axis2<span>璁句負鐑洿鏂般傚湪</span>axis2.xml<span>鏂囦歡涓壘鍒?/span><span><parameter name="hotupdate">false</parameter></span><span>錛屽皢</span>false<span>鏀逛負</span>true<span>鍗沖彲銆?/span></p> <p><span>    </span>3. <span>鍦ㄦ祻瑙堝櫒涓祴璇?/span>WebService<span>鏃訛紝濡傛灉</span>WebService<span>鏂規硶鏈夊弬鏁幫紝闇瑕佷嬌鐢?/span>URL<span>鐨勮姹傚弬鏁版潵鎸囧畾璇?/span>WebService<span>鏂規硶鍙傛暟鐨勫鹼紝璇鋒眰鍙傛暟鍚嶄笌鏂規硶鍙傛暟鍚嶈涓鑷達紝渚嬪錛岃嫻嬭瘯</span>getGreeting<span>鏂規硶錛岃姹傚弬鏁板悕搴斾負</span>name<span>錛屽涓婇潰鐨?/span>URL<span>鎵紺恒?/span></p> <p><span>    </span>4. <span>鍙戝竷</span>WebService<span>鐨?/span>pojo<span>鐩綍鍙槸榛樿鐨勶紝濡傛灉璇昏呮兂鍦ㄥ叾浠栫殑鐩綍鍙戝竷</span>WebService<span>錛屽彲浠ユ墦寮</span>axis2.xml<span>鏂囦歡錛屽茍鍦?/span><axisconfig><span>鍏冪礌涓坊鍔犲涓嬬殑瀛愬厓绱狅細</span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000"> </span><span style="color: #0000ff"><</span><span style="color: #800000">deployer </span><span style="color: #ff0000">extension</span><span style="color: #0000ff">=".class"</span><span style="color: #ff0000"> directory</span><span style="color: #0000ff">="my"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="org.apache.axis2.deployment.POJODeployer"</span><span style="color: #0000ff">/></span> </div> <p> </p> <p> </p> <p> </p> <p>    <span>涓婇潰鐨勯厤緗厑璁稿湪</span><Tomcat<span>瀹夎鐩綍</span>>\webapps\axis2\WEB-INF\my<span>鐩綍涓彂甯?/span>WebService<span>銆備緥濡傦紝灝嗘湰渚嬩腑鐨?/span>SimpleService.class<span>澶嶅埗鍒?/span>my<span>鐩綍涓篃鍙互鎴愬姛鍙戝竷錛堜絾瑕佸垹闄?/span>pojo<span>鐩綍涓殑</span>SimpleService.class<span>錛屽惁鍒?/span>WebService<span>浼氶噸鍚嶏級銆?/span></p> <p> </p> <p><strong><span>涓夈?/span> </strong><strong><span>鐢?/span>Java</strong><strong><span>瀹炵幇璋冪敤</span>WebService</strong><strong><span>鐨勫鎴風紼嬪簭</span></strong></p> <p>    WebService<span>鏄負紼嬪簭鏈嶅姟鐨勶紝鍙湪嫻忚鍣ㄤ腑璁塊棶</span>WebService<span>鏄病鏈夋剰涔夌殑銆傚洜姝わ紝鍦ㄦ湰鑺備嬌鐢?/span>Java<span>瀹炵幇浜嗕竴涓帶鍒跺彴紼嬪簭鏉ヨ皟鐢ㄤ笂涓鑺傚彂甯冪殑</span>WebService<span>銆傝皟鐢?/span>WebService<span>鐨勫鎴風浠g爜濡備笅錛?/span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000"> client;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.xml.namespace.QName;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.addressing.EndpointReference;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.client.Options;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.rpc.client.RPCServiceClient;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> RPCClient<br />{<br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception  <br />    {<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  浣跨敤RPC鏂瑰紡璋冪敤WebService        </span><span style="color: #008000"><br /></span><span style="color: #000000">        RPCServiceClient serviceClient </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> RPCServiceClient();<br />        Options options </span><span style="color: #000000">=</span><span style="color: #000000"> serviceClient.getOptions();<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  鎸囧畾璋冪敤WebService鐨刄RL</span><span style="color: #008000"><br /></span><span style="color: #000000">        EndpointReference targetEPR </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> EndpointReference(<br />                </span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:8080/axis2/services/SimpleService</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        options.setTo(targetEPR);<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  鎸囧畾getGreeting鏂規硶鐨勫弬鏁板?/span><span style="color: #008000"><br /></span><span style="color: #000000">        Object[] opAddEntryArgs </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[] {</span><span style="color: #000000">"</span><span style="color: #000000">瓚呬漢</span><span style="color: #000000">"</span><span style="color: #000000">};<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  鎸囧畾getGreeting鏂規硶榪斿洖鍊肩殑鏁版嵁綾誨瀷鐨凜lass瀵硅薄</span><span style="color: #008000"><br /></span><span style="color: #000000">        Class[] classes </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Class[] {String.</span><span style="color: #0000ff">class</span><span style="color: #000000">};<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  鎸囧畾瑕佽皟鐢ㄧ殑getGreeting鏂規硶鍙奧SDL鏂囦歡鐨勫懡鍚嶇┖闂?/span><span style="color: #008000"><br /></span><span style="color: #000000">        QName opAddEntry </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> QName(</span><span style="color: #000000">"</span><span style="color: #000000">http://ws.apache.org/axis2</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">getGreeting</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  璋冪敤getGreeting鏂規硶騫惰緭鍑鴻鏂規硶鐨勮繑鍥炲?/span><span style="color: #008000"><br /></span><span style="color: #000000">        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />        </span><span style="color: #008000">//</span><span style="color: #008000">  涓嬮潰鏄皟鐢╣etPrice鏂規硶鐨勪唬鐮侊紝榪欎簺浠g爜涓庤皟鐢╣etGreeting鏂規硶鐨勪唬鐮佺被浼?/span><span style="color: #008000"><br /></span><span style="color: #000000">        classes </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Class[] {</span><span style="color: #0000ff">int</span><span style="color: #000000">.</span><span style="color: #0000ff">class</span><span style="color: #000000">};<br />        opAddEntry </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> QName(</span><span style="color: #000000">"</span><span style="color: #000000">http://ws.apache.org/axis2</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">getPrice</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        System.out.println(serviceClient.invokeBlocking(opAddEntry, </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[]{}, classes)[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />    } <br />}<br /></span></div> <p> </p> <p> </p> <p> </p> <p> </p> <p><span>榪愯涓婇潰鐨勭▼搴忓悗錛屽皢鍦ㄦ帶鍒跺彴杈撳嚭濡備笅鐨勪俊鎭細</span></p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">浣犲ソ 瓚呬漢<br />443</span> </div> <p>    <span>鍦ㄧ紪鍐欏鎴風浠g爜鏃跺簲娉ㄦ剰濡備笅鍑犵偣錛?/span></p> <p><span>    </span>1. <span>瀹㈡埛绔唬鐮侀渶瑕佸紩鐢ㄥ緢澶?/span>Axis2<span>鐨?/span>jar<span>鍖咃紝濡傛灉璇昏呬笉澶竻妤氳寮曠敤鍝釜</span>jar<span>鍖咃紝鍙互鍦?/span>Eclipse<span>鐨勫伐紼嬩腑寮曠敤</span>Axis2<span>鍙戣鍖呯殑</span>lib<span>鐩綍涓殑鎵鏈?/span>jar<span>鍖呫?/span></p> <p><span>    </span>2. <span>鍦ㄦ湰渚嬩腑浣跨敤浜?/span>RPCServiceClient<span>綾葷殑</span>invokeBlocking<span>鏂規硶璋冪敤浜?/span>WebService<span>涓殑鏂規硶銆?/span>invokeBlocking<span>鏂規硶鏈変笁涓弬鏁幫紝鍏朵腑絎竴涓弬鏁扮殑綾誨瀷鏄?/span>QName<span>瀵硅薄錛岃〃紺鴻璋冪敤鐨勬柟娉曞悕錛涚浜屼釜鍙傛暟琛ㄧず瑕佽皟鐢ㄧ殑</span>WebService<span>鏂規硶鐨勫弬鏁板鹼紝鍙傛暟綾誨瀷涓?/span>Object[]<span>錛涚涓変釜鍙傛暟琛ㄧず</span>WebService<span>鏂規硶鐨勮繑鍥炲肩被鍨嬬殑</span>Class<span>瀵硅薄錛屽弬鏁扮被鍨嬩負</span>Class[]<span>銆傚綋鏂規硶娌℃湁鍙傛暟鏃訛紝</span>invokeBlocking<span>鏂規硶鐨勭浜屼釜鍙傛暟鍊間笉鑳芥槸</span>null<span>錛岃岃浣跨敤</span>new Object[]{}<span>銆?/span></p> <p><span>    </span>3. <span>濡傛灉琚皟鐢ㄧ殑</span>WebService<span>鏂規硶娌℃湁榪斿洖鍊鹼紝搴斾嬌鐢?/span>RPCServiceClient<span>綾葷殑</span>invokeRobust<span>鏂規硶錛岃鏂規硶鍙湁涓や釜鍙傛暟錛屽畠浠殑鍚箟涓?/span>invokeBlocking<span>鏂規硶鐨勫墠涓や釜鍙傛暟鐨勫惈涔夌浉鍚屻?/span></p> <p><span>    </span>4. <span>鍦ㄥ垱寤?/span>QName<span>瀵硅薄鏃訛紝</span>QName<span>綾葷殑鏋勯犳柟娉曠殑絎竴涓弬鏁拌〃紺?/span>WSDL<span>鏂囦歡鐨勫懡鍚嶇┖闂村悕錛屼篃灝辨槸</span><wsdl:definitions><span>鍏冪礌鐨?/span>targetNamespace<span>灞炴у鹼紝涓嬮潰鏄?/span>SimpleService<span>綾葷敓鎴愮殑</span>WSDL<span>鏂囦歡鐨勪唬鐮佺墖孌碉細<br /><br /></span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span><span style="color: #000000"><br /></span><span style="color: #0000ff"><</span><span style="color: #800000">wsdl:definitions </span><span style="color: #ff0000">xmlns:wsdl</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="color: #ff0000"> xmlns:ns1</span><span style="color: #0000ff">="http://org.apache.axis2/xsd"</span><span style="color: #ff0000"> <br />xmlns:ns</span><span style="color: #0000ff">="http://ws.apache.org/axis2"</span><span style="color: #ff0000"> xmlns:wsaw</span><span style="color: #0000ff">="http://www.w3.org/2006/05/addressing/wsdl"</span><span style="color: #ff0000"> <br />xmlns:http</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/http/"</span><span style="color: #ff0000"> xmlns:xs</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #ff0000"> <br />xmlns:mime</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/mime/"</span><span style="color: #ff0000"> xmlns:soap</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"</span><span style="color: #ff0000"> <br />xmlns:soap12</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap12/"</span><strong><span style="color: #ff0000"> <br />targetNamespace</span><span style="color: #0000ff">="http://ws.apache.org/axis2"</span></strong><span style="color: #0000ff">></span><span style="color: #000000"><br />    </span><span style="color: #0000ff"><</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">></span><span style="color: #000000"><br />        <img alt="" src="http://m.tkk7.com/Images/dot.gif" /> <img alt="" src="http://m.tkk7.com/Images/dot.gif" /><br />    </span><span style="color: #0000ff"></</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">></span><span style="color: #000000"><br />    <img alt="" src="http://m.tkk7.com/Images/dot.gif" /> <img alt="" src="http://m.tkk7.com/Images/dot.gif" /><br /></span><span style="color: #0000ff"></</span><span style="color: #800000">wsdl:definitions</span><span style="color: #0000ff">></span><span style="color: #000000"><br /></span></div> <p> </p> <p><strong><span>鍥涖佺敤</span>wsdl2java</strong><strong><span>綆鍖栧鎴風鐨勭紪鍐?/span></strong></p> <p>    <span>涔熻鏈夊緢澶氳鑰呬細璇?#8220;鏈夋病鏈夋悶閿欏晩錛屽彧璋冪敤涓や釜</span>WebService<span>鏂規硶鐢ㄨ鍐欒繖涔堝浠g爜錛屽お楹葷儲浜?#8221;銆?/span></p> <p>    <span>涓嶈繃騫稿ソ</span>Axis2<span>鎻愪緵浜嗕竴涓?/span>wsdl2java.bat<span>鍛戒護鍙互鏍規嵁</span>WSDL<span>鏂囦歡鑷姩浜х敓璋冪敤</span>WebService<span>鐨勪唬鐮併?/span>wsdl2java.bat<span>鍛戒護鍙互鍦?/span><Axis2<span>瀹夎鐩綍</span>>"bin<span>鐩綍涓壘鍒般傚湪浣跨敤</span>wsdl2java.bat<span>鍛戒護涔嬪墠闇瑕佽緗?/span>AXIS2_HOME<span>鐜鍙橀噺錛岃鍙橀噺鍊兼槸</span><Axis2<span>瀹夎鐩綍</span>><span>銆?/span></p> <p>    <span>鍦?/span>Windows<span>鎺у埗鍙拌緭鍑哄涓嬬殑鍛戒護琛屾潵鐢熸垚璋冪敤</span>WebService<span>鐨勪唬鐮侊細</span></p> <p><span>%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/axis2/services/SimpleService?wsdl -p client -s -o stub</span></p> <p>    <span>鍏朵腑</span>-url<span>鍙傛暟鎸囧畾浜?/span>wsdl<span>鏂囦歡鐨勮礬寰勶紝鍙互鏄湰鍦拌礬寰勶紝涔熷彲浠ユ槸緗戠粶璺緞銆?/span>-p<span>鍙傛暟鎸囧畾浜嗙敓鎴愮殑</span>Java<span>綾葷殑鍖呭悕錛?/span>-o<span>鍙傛暟鎸囧畾浜嗙敓鎴愮殑涓緋誨垪鏂囦歡淇濆瓨鐨勬牴鐩綍銆傚湪鎵ц瀹屼笂闈㈢殑鍛戒護鍚庯紝璇昏呭氨浼氬彂鐜板湪褰撳墠鐩綍涓嬪浜嗕釜</span>stub<span>鐩綍錛屽湪</span>."stub"src"client<span>鐩綍鍙互鎵懼埌涓涓?/span>SimpleServiceStub.java<span>鏂囦歡錛岃鏂囦歡澶嶆潅璋冪敤</span>WebService<span>錛岃鑰呭彲浠ュ湪紼嬪簭涓洿鎺ヤ嬌鐢ㄨ繖涓被錛屼唬鐮佸涓嬶細<br /></span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000"> client;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.xml.namespace.QName;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.addressing.EndpointReference;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.client.Options;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.axis2.rpc.client.RPCServiceClient;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> StubClient<br />{<br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception  <br />    {<br />        SimpleServiceStub stub </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> SimpleServiceStub();<br />        SimpleServiceStub.GetGreeting gg </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> SimpleServiceStub.GetGreeting();<br />        gg.setName(</span><span style="color: #000000">"</span><span style="color: #000000">姣斿皵</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        System.out.println( stub.getGreeting(gg).get_return());<br />        System.out.println(stub.getPrice().get_return());<br />    } <br />}<br /></span></div> <p> </p> <p> </p> <p>    <span>涓婇潰鐨勪唬鐮佸ぇ澶х畝鍖栦簡璋冪敤</span>WebService<span>鐨勬楠わ紝騫朵嬌浠g爜鏇村姞綆媧併備絾瑕佹敞鎰忕殑鏄紝</span>wsdl2java.bat<span>鍛戒護鐢熸垚鐨?/span>Stub<span>綾誨皢</span>WebService<span>鏂規硶鐨勫弬鏁伴兘灝佽鍦ㄤ簡鐩稿簲鐨勭被涓紝綾誨悕涓烘柟娉曞悕錛屼緥濡傦紝</span>getGreeting<span>鏂規硶鐨勫弬鏁伴兘灝佽鍦ㄤ簡</span>GetGreeting<span>綾諱腑錛岃鎯寵皟鐢?/span>getGreeting<span>鏂規硶錛屽繀欏誨厛鍒涘緩</span>GetGreeting<span>綾葷殑瀵硅薄瀹炰緥銆?/span></p> <p><strong><span>浜斻佷嬌鐢?/span>C#</strong><strong><span>璋冪敤</span>WebService</strong></p> <p>    <span>浠庣悊璁轟笂璇達紝</span>WebService<span>鍙互琚換浣曟敮鎸?/span>SOAP<span>鍗忚鐨勮璦璋冪敤銆傚湪</span>Visual Studio<span>涓嬌鐢?/span>C#<span>璋冪敤</span>WebService<span>鏄湪鎵鏈夎璦涓渶瀹規槗瀹炵幇鐨勶紙</span>VB.net<span>鐨勮皟鐢ㄦ柟娉曠被浼鹼紝涔熷悓鏍峰緢綆鍗曪級銆?/span></p> <p>    <span>鏂板緩涓涓?/span>Visual Studio<span>宸ョ▼錛屽茍鍦ㄥ紩鐢?/span>Web<span>鏈嶅姟鐨勫璇濇涓緭鍏ュ涓嬬殑</span>URL<span>錛屽茍杈撳叆</span>Web<span>寮曠敤鍚嶄負“</span>WebService<span>”錛?/span></p> <p>    <a href="http://localhost:8080/axis2/services/SimpleService?wsdl">http://localhost:8080/axis2/services/SimpleService?wsdl</a></p> <p>    <span>鐒跺悗寮曠敤</span>Web<span>鏈嶅姟鐨勫璇濇灝變細鏄劇ず璇?/span>WebService<span>涓殑鎵鏈夌殑鏂規硶錛屽鍥?/span>5<span>鎵紺恒?br /></span></p> <p> </p> <p> </p> <p>    <span>鍦ㄥ畬鎴愪笂闈㈢殑宸ヤ綔鍚庯紝鍙渶瑕佸涓嬩笁琛?/span>C#<span>浠g爜灝卞彲浠ヨ皟鐢?/span>getGreeting<span>鍜?/span>getPrice<span>鏂規硶錛屽茍鏄劇ず榪欎袱涓柟娉曠殑榪斿洖鍊鹼細</span></p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">WebService.SimpleService simpleService </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> WSC.WebService.SimpleService();<br />MessageBox.Show( simpleService.getGreeting(</span><span style="color: #000000">"</span><span style="color: #000000">姣斿皵</span><span style="color: #000000">"</span><span style="color: #000000">));<br />MessageBox.Show(simpleService.getPrice().@return.ToString());</span> </div> <p> </p> <p> </p> <p> </p> <p>    <span>鍦?/span>.net<span>瑙f瀽</span>WSDL<span>鏂囦歡鏃剁洿鎺ュ皢</span>getGreeting<span>鏂規硶鐨勫弬鏁版槧灝勪負</span>String<span>綾誨瀷錛屽洜姝わ紝鍙互鐩存帴榪涜浼犲箋?/span><br />    <span>浠庝笂闈㈢殑璋冪敤榪囩▼鍙互鐪嬪嚭錛屾坊鍔?/span>Web<span>寮曠敤鐨勮繃紼嬪氨鐩稿綋浜庡湪</span>Java<span>涓皟鐢?/span>wsdl2java.bat<span>鑷姩鐢熸垚</span>stub<span>綾葷殑榪囩▼銆傚彧鏄湪璋冪敤</span>stub<span>綾繪椂涓?/span>C#<span>鏈変竴瀹氱殑鍖哄埆錛屼絾浠庢諱綋涓婃潵璇達紝閮藉ぇ澶х畝鍖栦簡璋冪敤</span>WebService<span>鐨勮繃紼嬨?/span></p> <div><br /><br />鍥?</div> <div><br /><img class="magplus" title="鐐瑰嚮鏌ョ湅鍘熷澶у皬鍥劇墖" alt="" src="http://dl.iteye.com/upload/attachment/228197/b684beb5-3e6f-3494-a479-d9ff4d1ca3f1.jpg" width="700" height="434" /><br /> <br /></div> <div><br /><span><br />鍥?</span> </div> <div><br /><img class="magplus" title="鐐瑰嚮鏌ョ湅鍘熷澶у皬鍥劇墖" alt="" src="http://dl.iteye.com/upload/attachment/228191/b28de9a2-c8e0-341d-93e0-75c7e852930f.jpg" width="700" height="405" /><br /> <br /></div></div><img src ="http://m.tkk7.com/zhb8015/aggbug/377301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhb8015/" target="_blank">zhb8015</a> 2012-05-03 17:07 <a href="http://m.tkk7.com/zhb8015/articles/377301.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>axis2鎻掍歡瀹夎http://m.tkk7.com/zhb8015/articles/377280.htmlzhb8015zhb8015Thu, 03 May 2012 07:25:00 GMThttp://m.tkk7.com/zhb8015/articles/377280.htmlhttp://m.tkk7.com/zhb8015/comments/377280.htmlhttp://m.tkk7.com/zhb8015/articles/377280.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/377280.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/377280.html
Axis2_Codegen_Wizard_1.3.0
Axis2_Service_Archiver_1.3.0

zhb8015 2012-05-03 15:25 鍙戣〃璇勮
]]>
XFire 瀛︿範http://m.tkk7.com/zhb8015/articles/373409.htmlzhb8015zhb8015Thu, 05 Apr 2012 14:10:00 GMThttp://m.tkk7.com/zhb8015/articles/373409.htmlhttp://m.tkk7.com/zhb8015/comments/373409.htmlhttp://m.tkk7.com/zhb8015/articles/373409.html#Feedback0http://m.tkk7.com/zhb8015/comments/commentRss/373409.htmlhttp://m.tkk7.com/zhb8015/services/trackbacks/373409.html
http://m.tkk7.com/fastzch/archive/2008/08/28/225439.html
http://m.tkk7.com/waterye/archive/2005/12/05/22643.html
http://xfire.codehaus.org/JSR+181+Annotations
http://blog.csdn.net/hlf48641715/article/details/3220542
http://www.ibm.com/developerworks/cn/java/j-ws/#JAVAZA45

http://blog.csdn.net/shazhenhua/article/details/3186726
<interface_name>.aegis.xml-->
<mappings>
    
<mapping>
        
<method name="test">
            
<parameter index="0" componentType="java.lang.String" />
            
<return-type componentType="org.vivianj.xfire.pojo.Course" />
        
</method>
    
</mapping>
</mappings>

problem:
http://yuyuqian521.iteye.com/blog/939047

PS錛?br />1銆両HelloService.aegis.xml 搴斾笌interface鏀懼湪鍚屼竴鍖呬笅錛屽惁鍒欐姤閿欙細
1 Cannot create mapping for java.util.List, unspecified component type for parameter 0 of method test in interface org.vivianj.xfire.service.IHelloService
2     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:370)
2銆乻ervices.xml搴旀斁鍦╟lasses 涓紝鐩綍緇撴瀯META-INF-xfire-services.xml

zhb8015 2012-04-05 22:10 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 99精品免费视品| 午夜老司机永久免费看片| 亚洲人成色77777在线观看大| 日韩在线视频免费| 亚洲一区二区影院| 免费观看的毛片手机视频| 一级A毛片免费观看久久精品| 亚洲国产精品成人久久| 一二三四在线播放免费观看中文版视频| 亚洲欧洲自拍拍偷综合| 青青视频观看免费99| 瑟瑟网站免费网站入口| 亚洲AV无码AV男人的天堂| 毛片免费视频观看| 一级毛片无遮挡免费全部| 亚洲最大免费视频网| 亚洲国产精品无码久久九九| 最近中文字幕完整免费视频ww| 国产成人精品久久亚洲高清不卡 | 国产精品成人无码免费| 人人玩人人添人人澡免费| 亚洲爆乳成av人在线视菜奈实| 亚洲狠狠婷婷综合久久久久| 成人性生交视频免费观看| 大地资源中文在线观看免费版| 亚洲日本成本人观看| 亚洲av无码乱码国产精品fc2| 曰皮全部过程视频免费国产30分钟 | 亚洲高清在线观看| 国产精品二区三区免费播放心| 无码A级毛片免费视频内谢| 黄色毛片免费在线观看| 亚洲影视一区二区| 亚洲AV无码精品色午夜果冻不卡| 国产一级淫片视频免费看| 国产精品成人观看视频免费| 中文字字幕在线高清免费电影| 精品国产日韩亚洲一区在线| 亚洲av无码片区一区二区三区| 亚洲成亚洲乱码一二三四区软件| 亚洲第一黄色网址|