SOAP錛圫imple Object Access Protocol錛夛紝瀹冩槸涓縐嶆爣鍑嗘秷鎭紶閫掑崗璁紝閫氬父鏄疻eb Service鐨勪簨瀹炴爣鍑嗐係OAP鏄互XML涓哄熀紜錛孲OAP娑堟伅鏍煎紡鏄敱XML Schema妯″紡瀹氫箟錛岄氳繃XML鍛藉悕絀洪棿浣縎OAP鍏鋒湁寰堝己鐨勬墿灞曟с?br /> SOAP message錛歋OAP XML鏂囨。瀹炰緥錛岄氬父閫氳繃鍏朵粬鏌愪簺緗戠粶鍗忚鐨勬湁鏁堣澆鑽鋒潵鎼哄甫SOAP娑堟伅錛屼緥濡傦細HTTP, SMTP, TCP/IP絳夈?br /> WebService鍙互浣跨敤涓ょ娑堟伅浼犻掓柟寮忥細One-Way messaging錛堝崟鍚戞秷鎭紶閫掞級鎴栬匯equest/Response messaging錛堣姹?鍝嶅簲娑堟伅浼犻掞級
浜屻丼OAP鐨勫熀鏈粨鏋?br />
SOAP涓牴鍏冪礌鏄疎nvelope鍏冪礌銆侲nvelope鍏冪礌涓彲浠ュ寘鍚涓彲閫夌殑Header鍏冪礌錛屽繀欏誨悓鏃跺寘鍚竴涓狟ody鍏冪礌銆侶eader鍏冪礌蹇呴』鏄疎nvelope鍏冪礌鐨勭洿鎺ュ瓙鍏冪礌錛屽茍涓旇浣嶄簬Body鍏冪礌涔嬪墠銆?br />
涓夈丼OAP鐨勫懡鍚嶇┖闂?br />
SOAP娑堟伅鍙互鍦℉eader鍏冪礌鍜孊ody鍏冪礌涓寘鍚嫢騫蹭笉鍚岀殑XML鍏冪礌錛屼嬌鐢ㄥ敮涓鐨勫懡鍚嶇┖闂存潵鏍囪瘑瀹冧滑銆?br />
xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/鍛藉悕絀洪棿瀹氫箟浜嗘爣鍑哠OAP鍏冪礌錛堜緥濡傦細Envelope, Header鍜孊ody絳夛級銆侶eader鍏冪礌鐨勬瘡涓ご鏂囦歡閮芥湁鑷繁鐨勫懡鍚嶇┖闂淬?br />
鍥涖?SOAP澶?br />
SOAP header鍦╓eb Service涓殑搴旂敤瓚婃潵瓚婂錛屼緥濡傚畨鍏ㄦс佷簨鍔′互鍙婂叾浠栧悇縐嶆湇鍔℃柟闈㈢殑澶ч噺“鏍囧噯”鏂囦歡澶淬係OAP鏂囦歡澶存槸鎵╁睍SOAP鍗忚鐨勪竴涓姛鑳介潪甯稿己澶х殑鎺柦錛孲OAP鏂囦歡澶寸殑鎵╁睍鎬ф槸SOAP寰椾互嫻佽騫朵笖鑾峰緱鍏朵粬鍗忚娌℃湁鍙栧緱鎴愬姛鐨勫彟涓涓師鍥犮?br />
4.1 actor灞炴?next銆乽ltimate receiver)
Actor鏄敱SOAP娉ㄩ噴瀹氫箟鐨勶紝鍦⊿OAP 1.2涓紝actor灞炴у凡緇忚鏇村悕涓簉ole銆侫ctor灞炴у拰XML鍛藉悕絀洪棿緇勫悎鍦ㄤ竴璧蜂嬌鐢紝浠ョ‘瀹氳鐢ㄥ摢涓唬鐮佹ā鍧楀鐞嗗叿浣撶殑Header銆?br />
Next瑙掕壊琛ㄧず娑堟伅璺緞涓殑涓嬩竴涓妭鐐瑰繀欏誨鐞嗘枃浠跺ご銆?br />
Ultimate receiver瑙掕壊琛ㄧず鍙湁娑堟伅鐨勬渶緇堟帴鏀舵柟鎵嶈兘澶勭悊鎸囧畾鐨凥eader銆?br />
4.2 mustUnderstand灞炴?br />
琛ㄧず澶勭悊鏄惁涓哄己鍒舵у鐞嗭紝濡傛灉涓涓妭鐐逛笉鑳借瘑鍒煇涓涓己鍒舵eader錛岄偅涔堝繀瀹氫細浜х敓SOAP閿欒銆?br />
濡傛灉MustUnderstand灞炴х殑鍊兼槸0錛屽鏋滃簲鐢ㄧ▼搴忔病鏈夎兘澶熻瘑鍒鏂囦歡澶達紝閭d箞蹇呴』鍒犻櫎姝ゆ枃浠跺ご銆?br />
浜斻丼OAP浣?br />
Body鍏冪礌瑕佸寘鍚簲鐢ㄧ▼搴忎笓鏈夌殑鏁版嵁鎴栬呴敊璇秷鎭傚簲鐢ㄧ▼搴忕殑涓撴湁鏁版嵁鍙互鏄換鎰廥ML鏁版嵁鎴栬呮槸鎻愪緵緇欒繃紼嬭皟鐢ㄧ殑浠繪剰鍙傛暟銆傚彧鏈塖OAP娑堟伅鏈鍚庣殑鎺ユ敹鏂瑰簲璇ュ鐞哠OAP Body銆?br />
鍏丼OAP娑堟伅浼犻掓ā寮?br />
SOAP鏀寔鍥涚娑堟伅浼犻掓ā寮忥紙RPC/Literal, Document/ Literal, RPC/Encoded, and Document/Encoded錛夛紝浣嗘槸WS-I Basic Profile鍙厑璁窻PC/Literal鍜孌ocument/ Literal錛屼笉鏀寔SOAP encoding錛屽洜涓哄畠浼氬紩璧蜂弗閲嶇殑浜掓搷浣滄с侺iteral琛ㄧず鍙互鏍規嵁XML妯″紡楠岃瘉XML鏂囨。鐨勬湁鏁堟с?br />
6.1 Document/ Literal娑堟伅浼犻掓ā寮?br />
Document/ Literal娑堟伅浼犻掓ā寮忎腑錛孲OAP鐨凚ody鍏冪礌鍖呭惈涓涓猉ML鏍煎紡鑹ソ鐨勬枃妗f錛?br />
6.2 RPC/Literal娑堟伅浼犻掓ā寮?br />
RPC/Literal娑堟伅浼犻掓ā寮忓皢Body鍏冪礌鏍煎紡鍖栨垚struct銆侾RC璇鋒眰娑堟伅鍖呭惈璋冪敤鐨勬柟娉曞悕縐頒笌杈撳叆鍙傛暟銆俁PC鍝嶅簲娑堟伅鍒欏寘鍚繑鍥炲煎拰鍚勭杈撳嚭鍙傛暟錛堟垨鑰呴敊璇級錛?/p>
6.3 娑堟伅浼犻掓ā寮忓拰娑堟伅浜ゆ崲妯″紡
Messaging Modes錛氾紙RPC/Literal, Document/ Literal, RPC/Encoded, and Document/Encoded錛夈傛秷鎭紶閫掓ā寮忛氬父鎻忚堪鐨勬槸SOAP娑堟伅鐨勬湁鏁堣礋杞斤細鍗砐ML鏂囨。孌墊垨鑰呮槸榪滅▼榪囩▼璋冪敤瀵瑰簲鐨勫弬鏁板拰榪斿洖鍊肩殑XML琛ㄧず銆?br />
Messaging Exchange Patterns (MEPs)錛歄ne-Way and Request/Response MEPs銆傛秷鎭氦鎹㈡ā寮忚〃紺虹殑鏄秷鎭殑嫻佸悜錛岃屼笉鏄秷鎭殑鍐呭
涓冦丼OAP閿欒
SOAP閿欒鏄敱娑堟伅鎺ユ敹鏂癸紙娑堟伅鐨勪腑浠嬩綋鎴栬呮渶緇堟帴鏀舵柟錛変駭鐢熺殑銆傚彧鏈変嬌鐢ㄧ殑璇鋒眰/鍝嶅簲娑堟伅浼犻掓ā寮忕殑鏃跺欙紝鎵嶈鍘繪帴鏀舵柟灝哠OAP閿欒浼犻掔粰鍙戦佹柟銆?br />
7.1 faultcode鍏冪礌
faultcode琛ㄧず閿欒閿欒浠g爜錛屽寘鎷珻lient銆丼erver銆乂ersionMismatch鍜孧ustUnderstand涓嶅悓綾誨瀷銆?br />
Client琛ㄧず浼犻扴OAP娑堟伅鐨勮妭鐐瑰嚭鐜頒簡閿欒錛堝彂閫侀敊璇級錛屼緥濡傦細娑堟伅涓嶆槸涓涓壇濂界殑鏍煎紡錛屾垨鑰呭寘鍚棤鏁堟暟鎹佺己灝戞墍鏈熸湜鐨勪俊鎭紝鎺ユ敹鑺傜偣灝變細浜х敓涓涓狢lient閿欒銆?br />
Server琛ㄧず鎺ユ敹鍒癝OAP娑堟伅鐨勮妭鐐瑰彂鐢熸晠闅滄垨鑰呬笉鑳藉鐞哠OAP娑堟伅錛堜腑浠嬩綋鎴栬呮渶緇堟帴鏀舵柟寮曡搗鐨勯敊璇級銆備緥濡傦細褰撴帴鏀惰妭鐐瑰鐞哠OAP娑堟伅涓嶈兘榪炴帴鍒版暟鎹簱絳夎祫婧愶紝灝變細浜х敓涓涓猄erver閿欒銆?br />
VersionMismatch琛ㄧず鎺ユ敹鑺傜偣涓嶈兘璇嗗埆SOAP娑堟伅鐨凟nvelope鍏冪礌鐨勫懡鍚嶇┖闂達紝渚嬪錛歋OAP 1.1鐨勮妭鐐規帴鏀跺埌SOAP1.2娑堟伅銆?br />
MustUnderstand琛ㄧず鑺傜偣涓嶈兘璇嗗埆“MustUnderstand=1”鎸囧畾鐨刪eader錛屽氨浼氫駭鐢熻繖涓被鍨嬬殑fault銆?br />
榪樻湁涓浜涢潪鏍囧噯鐨勯敊璇俊鎭緥濡傦細
7.2 faultstring鍏冪礌
faultstring琛ㄧず閿欒鐨勬弿榪幫紝鏄己鍒舵у厓绱狅紝鍙互浣跨敤鐗規畩灞炴ml:lang琛ㄧず鏂囨湰娑堟伅浣跨敤鐨勮璦銆?br />
7.3 faultactor鍏冪礌
faultactor琛ㄧず閬囧埌閿欒騫朵笖浜х敓閿欒鐨勮妭鐐癸紝濡傛灉閿欒鑺傜偣鏄竴涓腑浠嬭妭鐐癸紝閭d箞闇瑕佷嬌鐢╢aultactor鍏冪礌錛屼絾鏄鏋滈敊璇妭鐐規槸鏈緇堟帴鏀舵柟錛屽垯璇ュ厓绱犲彲閫夈?br />
7.4 detail鍏冪礌
濡傛灉Body鍏冪礌鐨勫唴瀹逛駭鐢熼敊璇紝蹇呴』鍖呭惈閿欒娑堟伅鐨刣etail鍏冪礌錛屼絾鏄鏋滄枃浠跺ご鍙戠敓閿欒錛屽垯涓嶈兘鍖呭惈璇ュ厓绱?br />
鍏丼OAP鍜孒TTP
鐩墠鏈甯哥敤SOAP鐨勪紶杈撲綋鏄疕TTP銆傚ぇ澶氭暟HTTP鐨勪紶杈撶敱HTTP GET璇鋒眰鍜孒TTP搴旂瓟緇勬垚鐨勶紝HTTP GET璇鋒眰鎸囧畾浜嗚姹傜殑欏甸潰錛屽彲浠ュ寘鍚竴浜涘弬鏁幫紝HTTP response浣滀負鏈夋晥璐熻澆榪斿洖鍒板埌璇鋒眰鏂廣傚彟澶栵紝HTTP POST璇鋒眰鏈夋晥璐熻澆錛屾墍浠ラ傚悎鎼哄甫SOAP娑堟伅銆?br />
8.1 HTTP POST娑堟伅浼犺緭鐨凷OAP
HTTP POST娑堟伅蹇呴』鍖呭惈SOAPAction鏂囦歡瀛楀ご錛汼OAP1.2鐢?“application/soap+xml”) MIME綾誨瀷鏇挎崲SOAPAction鏂囦歡澶淬?br />
Content-Type鏄痶ext/xml錛岃〃紺烘湁鏁堣礋杞芥槸涓涓猉ML鏂囨。銆傚甫闄勪歡鐨凷OAP浼氭寚瀹歮ulitpart/related錛屼絾鏄笉鎺ㄨ崘榪欐牱鍋氥?br />
8.2 HTTP鍝嶅簲浠g爜
200-level鐨凥TTP鎴愬姛浠g爜鍖呮嫭錛?br />
200 OK琛ㄧず娑堟伅娌℃湁閿欒錛涘寘鍚竴涓甯哥殑SOAP鍝嶅簲娑堟伅銆?br />
200 Accepted錛氳〃紺烘垚鍔熷鐞嗕簡璇鋒眰錛屼絾鏄病鏈塖OAP鍝嶅簲鏁版嵁錛岀被浼間笌void榪斿洖綾誨瀷銆?br />
400-level閿欒
400 Bad Request錛氳〃紺篠OAP娑堟伅涓殑HTTP璇鋒眰鎴栬匵ML鏍煎紡涓嶆紜?br />
405 Method Not Allowed錛氬鏋滀笉鏄氳繃HTTP POST鏂瑰紡浼犻掔殑SOAP娑堟伅錛岃繑鍥炴閿欒銆?br />
415 Unsupported Media Type錛歵ext/xml鍊煎寘鍚竴涓狢ontent-Type鏂囦歡澶達紝鍚﹀垯灝嗚繑鍥炴閿欒銆?br />
500 Internal Server Error錛氬綋璇鋒眰/鍝嶅簲MEP涓殑鍝嶅簲娑堟伅鏄疭OAP閿欒鏃訛紝蹇呴』浣跨敤姝や唬鐮併?/p>
1銆佸緩绔嬩竴涓猂emote Interface
2銆丼ervice Implementation
瀹樼綉涓婄殑渚嬪瓙鏄病鏈夊疄鐜癕athService鎺ュ彛鐨勶紝鑰屼笖涔熻兘榪愯鎴愬姛錛屼絾鎴戣寰楁湁鐐逛笉鍚堥昏緫錛屼笉搴旇灝嗚瀹炵幇綾諱綔涓篗athService鎺ュ彛鏆撮湶緇檆lient绔?/p>
3銆亀eb.xml
4銆丣ava client
浣跨敤java瀹炵幇鐨刢lient錛岄氳繃HessianProxyFactory鐨刢reate鍗沖彲鑾峰彇鍒版湇鍔℃帴鍙c?/p>
5銆乸ython client
浣跨敤python瀹炵幇鐨刢lient錛岄渶鍔犲叆hessianlib.py銆?/p>
浠ヤ笂灝辨槸涓涓畬鏁寸殑Hessian瀹炵幇銆?/p>
Spring涔熸彁渚涗簡瀵笻essian鐨勯泦鎴愶紝鑻ヤ嬌鐢╯pring錛宻erver绔殑service瀹炵幇綾誨垯涓嶉渶瀹炵幇HessianServlet錛屼嬌鐢⊿pring鐨凞ispatcherServlet鏉ラ厤緗竴涓猄ervlet鏆撮湶浣犵殑鏈嶅姟銆?br />
web.xml
榪橀渶瑕佸湪 WEB-INF 鐩綍閲屽垱寤轟竴涓悕涓?remote-servlet.xml錛坮emote涓轟綘閰嶇疆鐨剆ervlet鍚嶏級鐨勫簲鐢ㄤ笂涓嬫枃銆?br />
remote-servlet.xml
server绔仛浠ヤ笂鎿嶄綔鍗沖彲銆?/p>
client绔彲浠ュ歡鐢ㄤ箣鍓嶇殑鎿嶄綔錛岃嫢浣跨敤spring鍒欏彲閫氳繃 HessianProxyFactoryBean鍦ㄥ鎴風榪炴帴鏈嶅姟錛屽湪spring鐨勯厤緗腑鍔犲叆錛?/p>
鍔犲叆浠ヤ笂鐨勯厤緗悗錛屽氨鍙儚浣跨敤鍏朵粬鐨刡ean涓鏍峰幓鎿嶄綔浜嗐傚師鏉ュ疄鐜頒竴涓獁ebservice鏄彲浠ヨ繖涔堢畝鍗曠殑銆?/p>