Websphere Adapter 中错误处理的原理与应用
2009-12-24 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷鑳剁划顖炲礉閿曞倸绀堟繛鍡樻尭缁€澶愭煏閸繃宸濈痪鍓ф櫕閳ь剙绠嶉崕閬嶅箯閹达妇鍙曟い鎺戝€甸崑鎾斥枔閸喗鐏堝銈庡幘閸忔﹢鐛崘顔碱潊闁靛牆鎳愰ˇ褔鏌h箛鎾剁闁绘顨堥埀顒佺煯缁瑥顫忛搹瑙勫珰闁哄被鍎卞鏉库攽閻愭澘灏冮柛鏇ㄥ幘瑜扮偓绻濋悽闈浶㈠ù纭风秮閺佹劖寰勫Ο缁樻珦闂備礁鎲¢幐鍡涘椽閸愵亜绨ラ梻鍌氬€烽懗鍓佸垝椤栫偛绀夐柨鏇炲€哥粈鍫熺箾閸℃ɑ灏紒鈧径鎰厪闁割偅绻冨婵堢棯閸撗勬珪闁逞屽墮缁犲秹宕曢柆宥呯闁硅揪濡囬崣鏇熴亜閹烘垵鈧敻宕戦幘鏂ユ灁闁割煈鍠楅悘鍫濐渻閵堝骸骞橀柛蹇旓耿閻涱噣宕橀纰辨綂闂侀潧鐗嗛幊鎰八囪閺岋綀绠涢幘鍓侇唹闂佺粯顨嗛〃鍫ュ焵椤掍胶鐓紒顔界懃椤繘鎼圭憴鍕彴闂佸搫琚崕鍗烆嚕閺夊簱鏀介柣鎰緲鐏忓啴鏌涢弴銊ュ箻鐟滄壆鍋撶换婵嬫偨闂堟刀銏犆圭涵椋庣М闁轰焦鍔栧鍕熺紒妯荤彟闂傚倷绀侀幉锟犲箰閸℃稑妞介柛鎰典簻缁ㄣ儵姊婚崒姘偓宄懊归崶顒夋晪闁哄稁鍘奸崹鍌炲箹濞n剙濡肩紒鈧崘顔界叆婵犻潧妫欓ˉ婊堟煟閿曞倷鎲炬慨濠傤煼瀹曟帒鈻庨幒鎴濆腐婵$偑鍊戦崹褰掓晝閵堝鐓濈€广儱顦崡鎶芥煏韫囨洖啸妞ゆ柨顦靛娲箹閻愭彃濮堕梺鍛婃尰閻熲晠骞冨鈧獮搴ㄦ嚍閵壯冨箰闂備礁鎲¢崝鎴﹀礉鎼淬垺娅犻柡鍥╁Х绾惧ジ鏌嶈閸撶喎鐣峰鈧崺鐐村緞閸濄儳娉块梻鍌氣看閸嬪嫬煤閵堝悿褰掓倻閸撳灝娲弫鍐焵椤掑嫭绠掓繝鐢靛Т閿曘倝鎮ц箛娑欏仼婵炲樊浜濋悡娑㈡倶閻愰鍤欏┑鈥炽偢閺屽秶鎲撮崟顐や紝閻庤娲栧畷顒勫煝鎼淬倗鐤€闁规儳顕Σ妤冪磽閸屾艾鈧悂宕愰悜鑺モ挃鐎广儱顦粈澶愬箹鏉堝墽鍒伴柛銊︾箖閵囧嫰寮介顫捕婵℃鎳樺娲川婵犲啫顦╅梺鎼炲妽婢瑰棛鍒掓繝姘闁兼亽鍎遍埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔忓Λ鍕箒闂佺粯枪瀹曠敻鎮鹃悜妯诲弿濠电姴鍟妵婵囦繆椤愩垹鏆欓柍钘夘槸閳诲酣骞囬鐐╁亾閻戣姤鈷戦悹鍥ㄥ絻椤掋垽鏌i褍娅嶇€规洩绻濋獮搴ㄦ嚍閵夈儰绮ф俊鐐€栧ú宥夊磻閹惧灈鍋撶憴鍕闁绘牕銈搁妴浣肝旀担鍝ョ獮闁诲函缍嗛崑鍛存偟椤愨懇鏀介柣妯诲墯閸熷繘鏌涢敐搴$仯鐎垫澘锕畷婊嗩槷闁稿鎸剧划顓炩槈濡粯鎮欑紓浣哄У閻擄繝寮诲☉銏犖ㄦい鏃傚帶椤晠姊洪挊澶婃殶闁哥姵鐗犲濠氭晲婢跺﹥顥濋梺鍦圭€涒晠宕伴幇鐗堚拺闁煎鍊曢弸搴g磽瀹ュ拑韬€殿喛顕ч埥澶愬煑閳规儳浜鹃柨鏇炲€哥粻锝嗙節闂堟稒宸濆ù婊庝簼娣囧﹪鎮欓鍕ㄥ亾閵堝绀堟繛鍡樻尰閸嬪鏌涢埄鍐枔闁逞屽墯濡啫鐣峰鈧、娆撳床婢诡垰娲ょ粻鍦磼椤旂厧甯ㄩ柛瀣崌閹崇娀顢楅埀顒勫吹椤掑倻纾介柛灞捐壘閳ь剟顥撳▎銏ゆ晸閻樿尙鐛ュ┑掳鍊曢幊搴g不娴煎瓨鐓欓梻鍌氼嚟閸斿秹鏌涚€Q勬珚闁哄矉缍侀獮瀣晲閸♀晜顥夌紓浣鸿檸閸樻悂宕戦幘缁樷拻濞达綀娅g敮娑㈡煕閺冣偓濞叉粎鍒掗弮鍫燁棃婵炵娅曢惄顖氱暦濮椻偓椤㈡瑩宕楅崗澶规岸姊绘笟鈧埀顒傚仜閼活垱鏅堕鐐寸厪闁搞儜鍐句純濡ょ姷鍋炵敮锟犵嵁鐎n亖鏀介柟閭︿簽绾惧姊虹拠鍙夊攭妞ゎ偄顦甸獮鎰槹鎼达絿鐒兼繛鎾村焹閸嬫捇鏌涢埡鍐ㄤ槐妤犵偛顑夐弫鍌炴寠婢跺鐫忛梻鍌欑濠€杈╁垝椤栨粍鏆滈柍鍝勫€搁閬嶆煃瑜滈崜娑氭閹惧瓨濯撮柣鐔告緲婵垽鎮峰⿰鍕棆闁稿鍠栧畷姘跺箳閹存梹鐎婚梺瑙勫劤閻ゅ洭骞楅弴鐐╂斀闁绘劖娼欓悘锕傛煟椤撗冩灈闁宠绮欓、鏃堝醇閻斿搫骞嶉梺鑽ゅ枑閻熴儳鈧凹鍓氶幈銊╁炊閵婏絼绨婚梺闈涱檧婵″洨绮婚悙瀛樺弿濠电姴鍟妵婵嬫煛鐏炶姤鍤囬柟顔界懇閹崇姷鎹勬笟顖欑磾婵犵數濮幏鍐磼濮橆剛銈梻浣告惈閻ジ宕伴弽顓炵鐟滅増甯╅弫鍐煥濠靛棙鍣介柨娑欐崌濮婄粯鎷呴悷閭﹀殝缂備浇顕х€氭澘鐣烽幋婵冩闁靛繒濮烽崢鎾⒑閻熼偊鍤熷┑顕呭弮瀹曟垿骞樼紒妯绘珳闁圭厧鐡ㄩ敋濞存粎鍋撻妵鍕箻鐎电硶濮囧┑鐐叉噹閿曨亪寮婚敍鍕勃闁伙絽鐫楅敐鍡欑缁炬澘褰夐柇顖涱殽閻愯尙绠冲ù鐙呯畵閹稿﹥寰勬繝鍛缚闂傚倸鍊搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒绾惧綊鏌¢崶銉ョ仼缂佺姷濞€閺岀喖鏌囬敃鈧弸鐔搞亜椤愶絾绀嬮柡宀€鍠栭獮鍡氼槾闁圭晫濮撮埞鎴︻敍濞戞瑥鍞夐梺鍝勬湰閻╊垶鐛鈧鍫曞箣閻樼偣鍋¢梻鍌欑閹诧繝骞愮粙璺ㄦ殾妞ゆ帒瀚ч埀顒佹瀹曟﹢顢欓崲澹洦鐓曢柍鈺佸枤濞堟ê霉閻樿櫕鍊愭慨濠冩そ閹筹繝濡堕崨顔界槪闂備礁鎼幊蹇涙儎椤栫偛绠栧Δ锝呭暞閸婂鏌﹀Ο鐚寸礆闁靛ě鍕瀾婵犮垼鍩栭崝鏇犲婵犳碍鐓欓柛鎾楀懎绗¢梺鍝勬噺閻擄繝鐛弽顐㈠灊闁荤喐婢橀埛澶愭⒑鐠囪尙绠扮紒澶屾嚀椤繘鎼归崷顓狅紲濠碘槅鍨甸褔妫勫鍛斀闁绘劖褰冪痪褔鏌ㄩ弴妯虹仾濞e洤锕幃鐣岀矙鐠侯煈妲规俊鐐€栭悧妤€顫濋妸鈺傚仾闁逞屽墴濮婂宕掑顑藉亾閹间焦鍋嬪┑鐘插閻瑩鏌熼柇锕€鏋﹀┑顔藉▕閺屻倕霉鐎n偅鐝栫紒鐐礃濡嫰婀侀梺鎸庣箓閻楀﹪藟婢舵劖鐓熼柟鐐綑婵牓鏌熸笟鍨閾伙絿绱掔€n亞浠㈡い顒€顑呴埞鎴﹀灳閸愯尙楠囬梺鍛婃⒐閻熲晠鎮伴鍢夌喖宕楅悡搴e酱闂備浇鍋愰埛鍫ュ礈閿曗偓鍗卞ù鐓庣摠閳锋帒霉閿濆毥褰掑汲闁秵鐓欑痪鏉垮船娴滄壆鈧娲橀崝鏍崲濠靛柊鎺旂矙閹稿骸鏋犻悗娈垮枦閸╂牠骞嗛弮鍫濈閻庢稒蓱濠㈡垵鈹戦敍鍕杭闁稿﹥鐗曢~蹇旂節濮橆儵銉╂倵閿濆簼鎲鹃柛鐔锋嚇閺屾洘寰勫☉婊咁槹婵炲瓨绮嶇划宥夊Φ閸曨垰绠婚悹楦挎〃缁泛鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺濠氭晲婢跺娅滈梺鎼炲劀閸愩劎顓哄┑掳鍊楁慨鐑藉磻閻愬灚鏆滈柨鐔哄Х瀹撲線鎮楅敐搴℃灈缂侇偄绉归弻宥堫檨闁告挾鍠栭獮鍐ㄎ旀担铏圭槇濠殿喗锕╅崢鎼佸箯濞差亝鐓熼柣鏂挎憸閹冲啴鎮楀鐓庡籍鐎规洘娲栬灃闁告侗鍠氶崢鍗炩攽閳藉棗鐏ラ柕鍡忓亾闂佺ǹ顑嗛幑鍥箖閵忋倕绠甸柟鐑樺灩闂冣偓濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁樺灴婵$敻宕熼姘鳖啋闂佸憡顨堥崑鐔哥閼测晝纾奸柣鎰靛墮閸斻倖銇勯鐘插幋鐎殿喖顭烽幃銏ゆ偂鎼达綆妲堕柣鐔哥矊缁绘帡寮灏栨闁靛骏绱曢崢鎾绘⒒娴e摜浠㈡い鎴濇嚇閹﹢鏁冮崒娑氬帾闂佹悶鍎滈崘鍙ョ磾婵°倗濮烽崑鐐垫暜閳ュ磭鏆﹂柛妤冨剱濞撳鏌熼鍡楁湰椤ワ紕绱撻崒姘偓鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕闁芥ɑ绻堝娲敆閳ь剛绮旈幘顔煎嚑濞达絿纭堕弨浠嬫煟濡寧鐝柣銊﹀灩閳ь剝顫夐幐椋庢濮樿泛钃熸繛鎴欏灩閻掓椽鏌涢幇鍏哥按濠殿喖娲铏圭矙閸栤€冲闂佺ǹ绻戦敃銏狀嚕鐠囨祴妲堟俊顖炴敱閺傗偓闂備胶纭堕崜婵嬨€冭箛鏂款嚤闁逞屽墯娣囧﹪鎮欓鍕ㄥ亾閺嵮屾綎鐟滅増甯掔粈澶愭煛閸ャ儱鐏╅柣鎾达耿閺岀喐娼忔ィ鍐╊€嶉梺绋匡工椤兘寮诲☉銏犖ㄩ柕蹇婂墲閻濇牠鏌″蹇曠瘈婵﹦绮幏鍛村川婵犲倹娈橀梻浣告贡鏋い顓犲厴楠炲啴鎮滈懞銉︽珕闂佷紮绲芥径鍥绩閾忣偆绡€闁汇垽娼у瓭濠电偠顕滅粻鎾崇暦閻㈢ǹ绀冩い鏃傛櫕閸樻捇姊洪崨濠勭畵閻庢凹鍓熷鎶芥偄閸忚偐鍙嗗┑鐐村灦閻熝囨儗閹烘挻鍙忓┑鐘叉川缁变即鏌曢崶銊ュ妤犵偞甯¢獮瀣堪閸愨晝鈧娊姊婚崒娆戭槮闁硅绻濋幃鐑藉Ψ閿旂粯顔旈梺褰掓?缁€渚€鎮″┑瀣厵闁绘劦鍓氶悘閬嶆煕椤愵偂閭柡灞剧洴椤㈡洟濡堕崨顔句簴闂備礁鎲¤摫闁诡喖鍊垮濠氭晲閸垻鏉搁梺鍝勬川閸嬫﹢骞嬫搴g<缂備降鍨归獮鏍煟閺嶎偄甯堕柣锝囧厴楠炲鏁冮埀顒傜不婵犳碍鍋i柛銉簻閻ㄦ椽鏌i妶鍌氫壕濠电姷鏁搁崑鐘诲箵椤忓棗绶ゅù鐘差儏缁犵喖鏌ㄩ悢鍝勑㈢痪鎹愵潐閵囧嫰寮介顫勃闂佹娊鏀遍崹褰掓儉椤忓牜鏁囬柣鎰綑濞咃絾绻涚€涙ḿ鐭婄紓宥咃躬楠炲啰鎹勭悰鈩冾潔闂佸搫璇為崘銊愭洟姊绘担铏广€婇柡鍌欑窔瀹曟垿骞橀幇浣瑰瘜闂侀潧鐗嗗Λ妤冪箔閹烘鐓曢柣鏇氱娴滀即鏌熼姘殭閻撱倖銇勮箛鎾村櫧闁告ê鎲$换娑欐綇閸撗冨煂濠电姭鍋撻弶鍫涘妽濞呯姵銇勮箛鎾跺闁绘挸鍟撮幃宄扳枎韫囨搩浠奸梺璇茬箲閹告娊寮婚悢纰辨晩闁伙絽鏈崳浼存倵濞堝灝鏋涢柣鏍с偢閻涱喚鈧綆鍠楅崑鎰板级閸偆鍘涢柡浣告喘濮婂宕掑顑藉亾妞嬪海鐭嗗ù锝夋交閼板潡寮堕崼娑樺濞寸姵宀稿缁樻媴娓氼垱鏁繝娈垮枔閸婃宕氶幒鎾村劅闁靛ǹ鍎抽ˇ顐︽⒑閸︻厼鍔嬫い銊ユ噽閻氭儳顓兼径瀣幈濡炪倖鍔戦崐鏇㈠几鎼粹埗褰掓偐閻戞﹩浠╃紓浣介哺閹稿骞忛崨鏉戠闁圭粯甯掓竟宥嗕繆閻愵亜鈧牕煤濡崵绠惧┑鐘叉搐閺嬩線鏌涢幇闈涙灈缁炬儳鍚嬬换娑㈠箣閻愯泛顥濆Δ鐘靛仜閻楁挸顫忕紒妯诲闁告稑锕ラ崕鎾斥攽閻愯尙婀撮柛銊ㄦ閻e嘲鈹戦崱娆愭畷闂佸憡娲﹂崜娆撳焵椤掆偓閻栧ジ寮婚敐鍛傜喖鎳栭埡浣侯偧闂備胶绮幐璇裁洪悢鐓庤摕闁绘柨鍚嬮崵瀣亜閹哄棗浜炬繝纰夌磿閸樠囨箒濠电姴锕ょ€氼剟宕濋妶澶嬬厓閻熸瑥瀚悘鎾煛娴e摜效鐎规洜鍠栭、鏇㈠焺閸愨晝绐旈梻鍌氬€烽懗鑸电仚闂佹寧娲忛崕鐢稿箖瑜旈幃鈺呮嚑椤掍焦顔曟繝鐢靛█濞佳囶敄閸℃稑鐤炬繝闈涱儐閻撳啰鎲稿⿰鍫濈闁绘梻鍘ч悘鎶芥煥閺囩偛鈧悂鏌ㄩ妶鍡曠箚闁靛牆鍊告禍楣冩⒑缂佹ê绗掗柣蹇斿哺婵$敻宕熼姘鳖唺閻庡箍鍎遍悧鍡涘储閿涘嫮纾藉ù锝呮惈瀛濇繝鈷€鍌滅煓闁糕斁鍋撳銈嗗坊閸嬫捇鏌涘Ο鑽ょ煉鐎规洘鍨块獮姗€寮妷锔芥澑闂備胶绮灙濞存粠鍓涚划锝夊籍閸喓鍘遍柣搴秵閸嬫帒鈻撻弮鍫熺厓閻熸瑥瀚悘瀛樸亜閵忥紕鎳呮繛鎴犳暬閹粓鎮剧仦钘夊唨婵犵數濮烽弫鎼佸磻濞戙垹绠柟瀵稿Т缁躲倝鏌涢…鎴濇殠闁挎繂顦粻娑㈡煛婢跺孩纭舵い鏂匡躬濮婃椽鎮烽弶鎸庢瘣缂佸墽铏庨崣鍐ㄧ暦娴兼潙绠婚悹鍥皺椤斿棝姊虹紒妯剁細缂侇噮鍨跺畷鐢稿箣閿旂晫鍘剧紓浣割儓濞夋洘绂掑☉娆愬弿闁挎繂妫楁慨宥嗘叏婵犲偆鐓肩€规洘甯掗~婵嬵敄閽樺澹曢梺缁樺灱婵倝宕甸崟顖涚厾闁告縿鍎查弳鈺伱归悩宕囶暡缂佺粯绻堥幃浠嬫濞戞鎹曟俊鐐€栧ú锕傚矗閸愩劎鏆︽俊銈傚亾閾伙絽銆掑鐓庣仩婵炲牄鍔岄—鍐Χ閸℃顫囬梺绋匡攻閻楁粓鍩€椤掍胶顣叉慨妯稿姂閸┾偓妞ゆ帒鍊归崵鈧繝銏㈡嚀閿曨亜鐣锋导鏉戝唨鐟滃寮搁弮鍫熺厪濠电姴绻愰々顒傜磼閳锯偓閸嬫捇姊绘担鍦菇闁搞劏妫勫玻鑳槼闁绘娴风槐鎾存媴閸濆嫪澹曞┑鐘灪宀h法鍒掗弮鍫熷仭闂侇叏绠戝▓銊╂⒑閸濆嫯顫﹂柛搴や含缁鎮介崨濠勫幍闂佺粯鍨跺玻璺ㄧ不濮椻偓閺屾盯鎮欓崹顐f瘓闂佸搫鐭夌紞渚€骞冮埡鍛€绘慨妤€妫旈崫妤呮⒑鐠囪尙绠扮紒璇茬墦瀹曟繂鐣濋崟鍨櫓闂婎偄娲︾粙鎴濇暜闁荤喐绮岄ˇ闈涚暦閹达箑绠婚柤鎼佹涧閺嬪倿姊洪崨濠冨闁告挻鐟ч崰濠傤吋閸涱亝鏂€闂佸疇妫勫Λ妤佺濠靛牏纾奸悹鍥ㄥ絻閳ь剙娼¢弫鎰版倷閸撲胶鏉稿┑鐐村灦閻燂箓宕曢鍫熲拺闂傚牃鏅涢惁婊堟煕濮椻偓缁犳牠寮鍛牚闁告劧绲鹃弬鈧梻浣哥枃濡嫬螞濡ゅ懏鍊堕柣妯肩帛閻撴瑧鐥弶鍨埞濞存粈鍗抽弻銊モ攽閸繀绮跺銈嗘尭閵堢ǹ鐣烽崼鏇炵厸闁告劘娉曢梻顖涚節閻㈤潧浠╅柟娲讳簽缁辩偞绗熼埀顒冩"闂佽宕橀褏绮堟径灞稿亾楠炲灝鍔氭い锔垮嵆閹€斥枎閹寸姷锛滈柣搴秵娴滅偞绂掗姀銈嗙厸闁糕剝绋愰幉楣冩煛瀹€瀣М闁轰焦鍔欏畷鎯邦槻妤犵偛顑呰灃闁绘﹢娼ф禒婊勩亜閹存繍妯€鐎殿噮鍋婂畷姗€顢欓懖鈺佸Е婵$偑鍊栫敮鎺楀磹缂佹ḿ鈻旂€广儱鎳夐弨浠嬫煟濡櫣锛嶆い锝嗙叀閺屾稓鈧絽澧庣粔顕€鏌$仦鍓ф创濠碉紕鍏橀獮瀣攽閸℃ɑ顔嶅┑掳鍊楁慨鏉懨洪銏犵畺婵°倕鍟崰鍡涙煕閺囥劌澧痪鏉跨Ф缁辨挻鎷呴崜鍙壭ч梺鐟版啞婵炲﹪宕规ィ鍐ㄧ睄闁割偅绻勯ˇ銊ヮ渻閵堝棙鐓ユ俊鎻掔墣椤﹀綊鏌$仦鍓ф创闁糕晛瀚板畷妤呮偑閳ь剚绂嶉鍕庢盯宕熼顐㈡倯闂佹悶鍎弲婵嬫晬濠靛洨绠鹃弶鍫濆⒔閸掓澘顭块悷甯含鐎规洘娲熼獮鍥偋閸垹骞堥梻渚€娼ф灙闁稿酣浜堕妴鍌氱暦閸モ晝锛滃銈嗘⒒閳峰牓宕曡箛鏂讳簻闁规儳鍟块幃鎴犫偓鍨緲鐎氼噣鍩€椤掑﹦绉靛ù婊勭墵瀹曟垿骞樼紒妯煎弳闁诲函绲婚崝瀣姳婵犳碍鈷戦柣鐔哄閹牏绱掓径濠勫煟閽樻繈鏌ㄩ弮鍫熸殰闁稿鎸搁埢鎾诲垂椤旂晫浜梻浣筋嚙缁绘垹鎹㈤崼銉ユ槬闁绘劕鎼粻锝夋煥閺囨浜鹃梺缁樻惈缁绘繈寮诲☉銏犵労闁告劗鍋撻悾鍏肩箾鐎电ǹ顎岄柛銊ㄦ硾椤繐煤椤忓嫬绐涙繝鐢靛Т濞寸兘宕濋崼鏇熲拺闁告稑锕ユ径鍕煕濞嗗繘顎楅悡銈夋煕濞戞﹫姊楃紒璇叉閺屾洟宕煎┑鍫㈩唺闂佸憡甯婇崡鎶藉蓟濞戙垺鍋嗗ù锝呮憸娴犳悂鎮楃憴鍕闁告梹鐟ラ悾鐤亹閹烘繃鏅濋梺鎸庣箓閹冲孩瀵兼惔銏㈢瘈缁剧増蓱椤﹪鏌涢妸锕€鈻曠€规洏鍨奸ˇ宕囩磼閸屾氨校闁靛牞缍佸畷姗€鍩℃担鎻掍壕闁割煈鍋呴崣蹇斾繆椤栨粌甯跺ù婊堢畺閹顫濋悙顒€顏�

错误处理机制简介
什么是错误绑定
在应用系统中,异常(Exception)是经常出现的。这些异常通常分为 2 类,一类是运行时异常(Runtime Exception),这类异常通常是因为代码缺陷造成的;另一类是业务逻辑异常 (Business Exception),这类异常通常是由于数据的不准确、不完善、应用系统无法处理造成的。
对于系统开发人员而言,运行时异常容易被捕获并进行相应的处理,处理的方式主要有忽略、包装后重新抛出、记录日志等。对于业务逻辑相关的异常,开发人员很难去分析和处理,最佳的处理方式是把这些异常信息提供给应用系统的调用者,由调用者对这些业务逻辑进行相关处理。应用系统传递给调用者的业务逻辑错误不应该是一个异常类,而是与业务相关的结构化异常数据,这样调用方不用关心服务的实现方式和编程语言,只需关注返回的数据(正确结果或者异常数据),并对这些数据进行相应的处理。另外,这些数据的格式通常是与编程语言无关的,而这正是 Websphere Adapter 的错误绑定(Fault Binding)特性所支持的。也就是说,错误绑定是 WebSphere Adapter 提供的一种与编程语言无关的处理业务逻辑异常的机制,通过此错误处理机制,能够将运行时异常和业务逻辑异常进行区分,并给应用系统的调用者提供更为有意义的错误数据。
注:错误绑定机制目前只能在 WebSphere Process Server 以及 WebSphere Application Server Feature Pack 环境中工作。
错误绑定实现原理
错误绑定是 Websphere Adapter 支持的一种错误处理机制,用在 outbound 应用场景中。错误绑定具有以下几个要素:
错误选择器(Fault selector)
错误名称(Fault name)
错误绑定类型(Fault binding type)
错误数据(Fault data)
当 WebSphere Adapter 遇到异常时,WebSphere Adapter 先调用错误选择器判断此异常是否为 WebSphere Adapter 支持的错误,如果不是,则不做处理,如果是,则调用错误选择器生成对应的错误名字。然后根据错误名字找到对应的错误绑定类型,最后调用错误绑定类型生成相应的错误数据,并将此错误数据返回给调用者。图 1 是整个错误绑定处理的流程图。
图 1. 错误绑定流程图
查看原图(大图)
WebSphere Adapter 错误绑定的配置
WebSphere Adapter 6.2 的实现已经支持错误绑定了,如果用户要在自己的应用系统中使用错误绑定,就需要配置相应的文件— import 文件和 wsdl 文件。WebSphere Adapter 在默认情况下可以直接为用户生成预定义好的错误配置,如果用户需要使用自己定义的错误类型,则需要在 .import 文件与 .wsdl 文件中进行相应的配置。
在 import 文件中,首先需要配置一个错误选择器(faultSelector),然后在每个 method 对应的 methodBindng 中,配置支持的 faultBinding,包括错误名称和错误绑定类型,它的格式如下:
<faultBinding fault="fault name" faultBindingType=" fault binding type"/>
下面是 JDBC Adapter Outbound create 操作错误绑定的配置实例。
清单 1. 错误绑定 import 文件配置实例
<?xml version="1.0" encoding="UTF-8"?>
<scdl:import name="Output"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:eis="http://www.ibm.com/xmlns/prod/websphere/scdl/eis/6.0.0"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0">
<interfaces> ... </interfaces>
<esbBinding xsi:type="eis:EISImportBinding"
faultSelector="com.ibm.j2ca.extension.emd.runtime.WBIFaultSelectorImpl"
dataBindingType="com.ibm.j2ca.jdbc.emd.databinding.JDBCDataBindingGenerator">
<resourceAdapter name="JDBCINConnectorApp.IBM WebSphere Adapter for JDBC"
type="com.ibm.j2ca.jdbc.JDBCResourceAdapter" version="6.2.0.2"/>
<connection type="com.ibm.j2ca.jdbc.JDBCManagedConnectionFactory"
interactionType="com.ibm.j2ca.jdbc.JDBCInteractionSpec">
<properties>
...
</properties>
</connection>
<methodBinding method="createCUSTOMER">
<faultBinding fault="INTEGRITY_CONSTRAINT_VIOLATION"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>
<faultBinding fault="MISSING_DATA"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>
<faultBinding fault="OBJECT_NOTFOUND_EXCEPTION"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>
<faultBinding fault="UNIQUECONSTRAINT_VIOLATION"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>
<interaction>
<properties>
<functionName>Create</functionName>
</properties>
</interaction>
</methodBinding>
<!-- other methodBinding -->
</esbBinding>
</scdl:import>
清单 1 中粗体部分分别是前文中提到的错误绑定的要素 -- 错误选择器和错误名字,错误绑定类型。
在配置 wsdl 文件前,用户首先需要准备错误数据。这些错误数据可以是用户自己定义的,也可以是 WebSphere Adapter 提供了的默认错误数据。图 2 是 WebSphere Adapter 默认提供的 RecordNotFound 错误业务对象定义。
图 2.RecordNotFound 错误数据定义
注:WebSphere Adapter 提供了一个基础的错误数据 WBIFault,其他的所有错误数据都继承自此错误数据。
接下来,用户需在 wsdl 文件中配置相应的错误数据。用户只需根据 import 文件中 methodBinding 所支持的错误名称在 wsdl 文件对应的操作(operation)中配置相应的错误数据。清单 2 是 JDBC Adapter Outbound wsdl 文件中 create 操作的错误配置实例。
清单 2.WSDL 文件错误数据配置实例
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="JDBCOutboundInterface1.wsdl" … >
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://com/ibm/j2ca/fault/afcfault"
xmlns:tns="http://com/ibm/j2ca/fault/afcfault">
<xsd:include schemaLocation="UniqueConstraintFault.xsd"/>
<xsd:include schemaLocation="ObjectNotFoundFault.xsd"/>
<xsd:include schemaLocation="MissingDataFault.xsd"/>
<xsd:include schemaLocation="IntegrityConstraintFault.xsd"/>
</xsd:schema>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://ForDW/JDBCOutboundInterface1"
xmlns:bons5="http://com/ibm/j2ca/fault/afcfault">
<xsd:import namespace="http://com/ibm/j2ca/fault/afcfault"/>
<xsd:import
namespace="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/customerbg"
schemaLocation="CustomerBG.xsd"/>
<xsd:element name="createCustomerBG"> ...
</xsd:element>
<xsd:element name="createCustomerBGResponse"> ...
</xsd:element>
<xsd:element name="MissingDataFault_element" nillable="true"
type="bons5:MissingDataFault"/>
<xsd:element name="UniqueConstraintFault_element" nillable="true"
type="bons5:UniqueConstraintFault"/>
<xsd:element name="IntegrityConstraintFault_element" nillable="true"
type="bons5:IntegrityConstraintFault"/>
<xsd:element name="ObjectNotFoundFault_element" nillable="true"
type="bons5:ObjectNotFoundFault"/>
</xsd:schema>
</wsdl:types>
<!-- wsdl:message
...
</wsdl:message -->
<wsdl:portType name="JDBCOutboundInterface1">
<wsdl:operation name="createCustomerBG">
<wsdl:input message="tns:createCustomerBGRequestMsg"
name="createCustomerBGRequest"/>
<wsdl:output message="tns:createCustomerBGResponseMsg"
name="createCustomerBGResponse"/>
<wsdl:fault message="tns:createCustomerBGMissingDataFaultMsg"
name="MISSING_DATA"/>
<wsdl:fault message="tns:createCustomerBGUniqueConstraintFaultMsg"
name="UNIQUECONSTRAINT_VIOLATION"/>
<wsdl:fault message="tns:createCustomerBGIntegrityConstraintFaultMsg"
name="INTEGRITY_CONSTRAINT_VIOLATION"/>
<wsdl:fault message="tns:createCustomerBGObjectNotFoundFaultMsg"
name="OBJECT_NOTFOUND_EXCEPTION"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
WebSphere Adapter 支持的错误绑定
WebSphere Adapter 作为一个与各种 EIS 系统进行连接的产品,支持两大类的产品,一类称作 Application Adapter,用来连接诸如 SAP,Siebel,Oracle EBS 等不同的应用系统,另外一类称为 Technology Adapter,用于连接 JDBC,Email,FTP 等标准的通用技术。各个不同的 Adapter 在其错误绑定上有某些相似之处。基于此种考虑,WebSphere Adapter 在其基础实现类中定义了 5 种通用的错误绑定,每个 Adapter 既可以直接使用这 5 种错误绑定,也可以很方便的定义自己特殊的错误绑定。下面的章节,我们先来看一下 WebSphere Adapter 定义的 5 中通用错误绑定和相应的错误数据。
表 1. 基本错误绑定类型
错误类型名称 | 错误类型实现类 | 错误类型业务对象 |
DUPLICATE_RECORD | DuplicateRecordException | DuplicateRecordFault |
MATCHES_EXCEEDED_LIMIT | MatchesExceededLimitException | MatchesExceededLimitFault |
MULTIPLE_MATCHING_RECORDS | MultipleMatchingRecordsException | MultipleMatchingRecordsFault |
RECORD_NOT_FOUND | RecordNotFoundException | RecordNotFoundFault |
MISSING_DATA | MissingDataException | MissingDataFault |
下面是 IBM WebSphere Adapter for JDBC 所支持的错误绑定类型,其他 Adapter 所支持的错误绑定类型,本文不再一一列举,有兴趣的读者可以在附件中找到相应 Adapter 所支持的全部错误绑定清单:
表 2.IBM WebSphere Adapter for JDBC 错误绑定定义清单
错误类型名称 | 详细描述 |
RecordNotFoundFault | 执行 Retrieve,RetrieveAll,Delete,Update 操作时,如果相应的数据库记录不存在,JDBC Adapter 会抛出该类错误,指示用户所存取的记录并不存在,用户可以根据相应的错误信息进行处理 |
MissingDataFault | 执行 outbound 操作时,业务对象没有填写必须填写的的属性信息,JDBC Adapter 会抛出该类错误,例如在执行 Create 操作时,用户没有输入相应的主键键值,JDBC adapter 就会抛出该错误提示用户。默认情况下 Create, Delete, Update, Retrieve, ApplyChanges 和 Exists 操作时会产生该类错误。 |
IntegrityConstraintFault | JDBC Adapter 单独定义的一种错误。当执行 Create 操作时,如果数据库抛出违背完整性限制的异常信息,JDBC Adapter 会抛出此类错误。例如,执行 Update 操作时对于子业务对象的外键键值和父业务对象对应的键值不能匹配时,JDBC adapter 就会抛出该错误 |
MatchesExceededLimitFault | JDBC Adapter 执行 RetrieveAll 操作时,当返回的查询结果记录条目超过了 MaxRecords 属性所配置的条目时,JDBC Adapter 会抛出该错误 |
MultipleMatchingRecordsFault | 执行 Retrieve 或者 Update 操作时,如果有超过一条记录符合查询条件,JDBC Adapter 会抛出该错误 |
ObjectNotFoundFault | 此错误类型为 JDBC adapter 单独定义的一种错误。执行 Create 或者 Update 操作时,JDBC Adapter 处理 Single-cardinality 子业务对象,如果子业务对象对应的记录在数据库中不存在,JDBC Adapter 会抛出该错误 |
UniqueConstraintFault | 此错误类型为 JDBC adapter 单独定义的一种错误。执行 Create 或 Update 操作时,如果 JDBC Adapter 接收到 SQLException,JDBC Adapter 会抛出该错误 |
除了本文列举了 IBM WebSphere Adapter for JDBC 预定好的错误类型外,用户还可以根据自己的需求定制自己的错误绑定,不过这不在本文的讨论范围。下面的章节我们将通过 IBM WebSphere Adapter for JDBC 来展示一个错误绑定的应用实例。
错误绑定应用示例
下面,我们将通过 WebSphere Adapter for JDBC Adapter 的一个示例来展示错误绑定的应用。对于 WebSphere Adapter 而言,每个操作支持的错误绑定是每个 Adapter 预先定义的,并在生成服务接口的时候自动生成相应的错误数据类型。下图所示的是一个 JDBC Adapter 的服务接口定义文件,可以看到,针对 Retrieve 操作,生成了 3 个不同的错误数据类型:
图 3. 服务接口定义示例
查看原图(大图)
关于每个操作所支持的错误绑定的含义,请参考上文。
除了在 WSDL 服务定义文件中定义这些错误数据类型外,JDBC Adapter 还会在对应的 Import 文件定义相应的错误绑定,见清单 3。
清单 3.Import 文件示例 <?xml version="1.0" encoding="UTF-8"?>
<scdl:import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:EIS="http://www.ibm.com/xmlns/prod/websphere/scdl/eis/6.0.0"
xmlns:ns1="http://testJDBC1/JDBCOutboundInterface"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0"
xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0"
displayName="JDBCOutboundInterface" name="JDBCOutboundInterface">
<interfaces>
<interface xsi:type="wsdl:WSDLPortType" preferredInteractionStyle="sync"
portType="ns1:JDBCOutboundInterface">
<scdl:interfaceQualifier xsi:type="scdl:JoinTransaction" value="true"/>
</interface>
</interfaces>
<esbBinding xsi:type="EIS:EISImportBinding"
faultSelector="com.ibm.j2ca.extension.emd.runtime.WBIFaultSelectorImpl"
dataBindingType="com.ibm.j2ca.jdbc.emd.databinding.JDBCDataBindingGenerator">
<resourceAdapter
name="testJDBC1App.IBM WebSphere Adapter for JDBC with local transaction support"
type="com.ibm.j2ca.jdbc.JDBCResourceAdapter" version="7.0.0.0">
…
</resourceAdapter>
<connection type="com.ibm.j2ca.jdbc.JDBCManagedConnectionFactory"
interactionType="com.ibm.j2ca.jdbc.JDBCInteractionSpec">
…
</connection>
<methodBinding method="retrieveallDb2adminCustomerBG">
<faultBinding fault="MATCHES_EXCEEDED_LIMIT"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.MatchingFaultDataBinding"/>
<faultBinding fault="RECORD_NOT_FOUND"
faultBindingType="com.ibm.j2ca.extension.emd.runtime.WBIFaultDataBindingImpl"/>
<interaction>
<properties>
<functionName>RetrieveAll</functionName>
</properties>
</interaction>
</methodBinding>
…
<!-- other methodBinding -->
</esbBinding>
</scdl:import>
对于应用程序的调用者而言,只需要知道 JDBC Adapter 的每个操作能够支持哪些错误,并且根据返回的错误数据进行相应处理即可。运行时,如果 JDBC Adapter 捕获的异常信息为一个业务逻辑异常,通过错误绑定机制的处理,将会返回对应的错误数据,调用者只需处理该错误数据对象即可。见下图显示的是返回的错误数据:
图 4. 业务逻辑异常处理结果
查看原图(大图)
如果运行时抛出的异常信息不是业务逻辑错误的话, Adapter 会直接抛出相应的异常信息,而不是错误数据对象。见下图的处理结果:
图 5. 一般异常处理结果
查看原图(大图)
结束语
本文首先介绍了错误绑定的原理,并介绍了 WebSphere Adapter 所支持的错误绑定及其使用场景。最后通过 2 个例子展现了错误绑定在处理业务逻辑异常与运行时异常时的区别。通过本文的介绍,读者能够在实际的应用开发中理解错误绑定,并能够灵活应用这些错误绑定。
- ››WebSphere Application Server 7.0 XML Feature P...
- ››WebSphere 反向投资者: 解决 WebSphere Applicati...
- ››WebSphere sMash 的创新应用,第 2 部分: 借助包装...
- ››Websphere MQ v6集群的负载均衡新功能
- ››WebSphere Process Server V6.0.2 集群,第 2 部分...
- ››WebSphere Process Server V6.0.2 集群,第 1 部分...
- ››WebSphere MQ性能调优浅谈
- ››WebSphere配置资源库管理
- ››WebSphere中的SSL/TLS:用法、配置和性能
- ››websphere ejb远程/本地调用总结
- ››WebSphere Application Server对SIP的支持
- ››WebSphere Process Server V6 体系结构概述
赞助商链接