WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堝姛缂佺娀绠栭弻宥堫檨闁告挻姘ㄩ幑銏犫槈濞嗘劕顎撻梺鍛婂姇瀵爼骞栭幇顔炬/闁告挆鍕畬闂佸疇顫夐崹鍧楀箖閳哄啠鍋撻崷顓炐㈡い銉︾箞濮婂搫效閸パ€鍋撳Δ鍛;闁规崘顕ф闂佸憡娲﹂崹鎵不濞戙垺鐓曟い鎰剁稻缁€鍐┿亜鎼达紕效婵﹨娅g划娆忊枎閹冨闂備礁鎽滄慨鐢稿礉濞嗘劒绻嗛柣銏⑶圭粈瀣亜閺嶃劏澹橀柛鐐姂濮婃椽妫冨ù銈嗙⊕閹峰懘骞撻幒宥咁棜闂備礁婀遍崕銈夈€冮崱娑樼厱闁圭儤顨嗛悡鏇㈡煛閸ャ儱濡煎ù婊勭矋閵囧嫯绠涢敐鍛睄闂佸搫澶囬埀顒€纾弳鍡涙倵閿濆骸澧伴柡鍡欏█閺屟勫濞嗘垵鍩岄梺闈涙鐢帡锝炲┑瀣亗閹艰揪绲奸悽鑽ょ磽娴h娈曢柛銊ョ仢椤繒绱掑Ο璇差€撶紓浣圭☉椤戝懎鈻撻鐐╂斀妞ゆ梹鏋婚崗顒傜磼閻樿櫕宕岄柕鍡曠椤繈骞囨担鍏夋瀸濠电姷鏁告慨顓㈠磻閹捐秮褰掓晲閸モ斂鈧﹪鏌¢埀顒佺鐎n偆鍘藉┑鈽嗗灡椤戞瑩宕电€n兘鍋撶憴鍕仩闁稿氦绮鹃悘鍐⒑缂佹◤顏勵嚕閸洖鐤柣鎰暩绾惧ジ鏌涚仦鐐殤閺佸牓鎮楃憴鍕缂侇喖绻樿棟閻庨潧鎽滃Λ顖炴煙椤栧棔绀佹禒顕€鎮楀▓鍨灈闁绘牜鍘ч悾鐑芥偂鎼存ɑ顫嶅┑鈽嗗灟鐠€锕傛倵瀹曞洨纾介柛灞剧懅閸斿秵銇勯妸銉︻棞闁伙絾绻堥獮鏍ㄦ媴濮濆本鎲伴梻浣虹帛濡啴藟閹捐姹查悗锝庡枟閻撶喐淇婇妶鍌氫壕闂佺粯顨呭Λ妤呭煝閹炬緞鏃堝川椤旇瀚奸梺鑽ゅТ濞茬娀鍩€椤掑啯鐝柣蹇婂亾闂傚倷绀侀幖顐﹀箠閹邦厽鍙忛柟缁㈠枟閸嬧晠鏌i妶搴$仜濞存粌缍婇弻鐔兼倻濡偐鐣洪梺鍝勬噺缁诲牆顫忓ú顏咁棃婵炴垶鑹鹃。鍝勨攽閳藉棗浜濋柣鐔叉櫊閵嗕礁鈻庨幒鏃傛澑闂佸搫鍟崐濠氭儊閸儲鈷戞慨鐟版搐閻忓弶绻涙担鍐插椤╃兘鏌ㄩ弴鐐测偓褰掓偂閺囥垺鐓忓┑鐐茬仢閸斻倝鏌涢埡瀣ɑ妞ゃ劊鍎甸幃娆撳级閹存繍娼氭俊銈囧Х閸嬬偤鏁冮姀銈冣偓浣糕枎閹炬潙娈愰梺鍐叉惈椤戝洭鐛姀銈嗏拻闁稿本鐟︾粊鐗堛亜椤愩埄妲搁柣锝呭槻铻i柤娴嬫櫇閻撳顪冮妶鍡橆梿闁跨喆鍎茬粋宥堛亹閹烘挾鍘甸梺缁樺灦钃遍悘蹇e幖闇夋繝濠傚暟缁夌儤鎱ㄦ繝鍛仩缂佽鲸甯掕灒闁惧繘鈧稒顢橀梻鍌欑劍鐎笛兠哄澶婄柧婵炴垶绮庢禍閬嶆⒒娴e憡鍟炴繛璇х畵瀹曞綊鏌嗗鍛幈闂佺鎻梽鍕偂濞嗘挻鐓犳繛鏉戭儐濞呭懎霉閻樺磭鐭婇柍瑙勫灴閸ㄩ箖鎮欓挊澶夊垝闂備浇顕栭崰妤呫€冮崨鏉戠叀濠㈣埖鍔曠粻鎶芥煙閹屽殶鐟滄澘娲ㄧ槐鎾诲磼濞嗘垼绐楅梺鍝ュУ閻楃娀銆侀弽顓炲窛闁圭⒈鍘介弲锝夋⒑缁嬭法绠抽柛妯犲懏顐介柣鎰節缁诲棙銇勯弽銊х煂閻㈩垱绋掔换娑㈠川椤撶喎鏋犲┑顔硷功缁垶骞忛崨瀛樺仭闂侇叏绠戝▓婵堢磽閸屾瑦绁版い鏇嗗洤纾归柛顭戝櫘閸ゆ洜绱撴担璐細缂佲檧鍋撻梻浣规偠閸庮垶宕濆鍛瀺闁搞儺鍓氶埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋呭畷宀€鈧娲忛崹浠嬪箖娴犲宸濆┑鐘插楠炴姊洪悷鏉挎倯闁伙綆浜畷瑙勭節濮橆剛鍘愰梺鍝勬储閸ㄦ椽鎮¢妷锔藉弿婵☆垰鐏濋悡鎰版煟閹捐泛鏋涢柣鎿冨亰瀹曞爼濡烽妷銉バ戠紓鍌欑椤戝牆鐣烽悽鍨潟闁圭儤姊荤壕鍏间繆椤栨繂浜归柣锝堟缁辨挻鎷呴搹鐟扮缂備浇顕ч悧鍡涙偩瀹勯偊娼ㄩ柍褜鍓氭穱濠傤潰瀹€濠冃ㄧ紓鍌欐祰妞村摜鎹㈤崼婵愭綎缂備焦蓱婵绱掑☉姗嗗剰婵炲牊鍔欏娲箹閻愭彃顬嗛梺鍛婎殔閸熷潡鎮鹃悜绛嬫晬闁绘劘灏欐鍥⒑閻熼偊鍤熷┑顕€娼ч埢鎾淬偅閸愨斁鎷虹紓鍌欑劍钃遍柍閿嬪浮閺屽秴鐣¢幍顔尖叺閻庢鍣崑濠傜暦閹烘鍊烽悗鐢登归獮鍫ユ⒒娴g懓鈻曢柡渚囧櫍瀹曟垿骞樼紒妯煎幐闂佸憡渚楅崰姘跺箠閸涱喕绻嗛柛娆忣槸婵洭鎽堕敐澶嬪仩婵炴垶甯掓晶鏌ユ煛閸屾浜鹃梻鍌氬€烽懗鍓佸垝椤栫偛绀夐柡鍥╁€i悢鍝ョ瘈闁搞儜鍐╁劒闂備胶绮弻銊╂儍濠靛缁╅柤鎭掑劘娴滄粓鏌¢崘銊﹀妞ゃ儱顦甸弻娑㈠棘鐠囨祴鍋撳┑瀣闁割偅娲橀崐鐑芥煟閹寸偍缂氶柛姗€浜跺娲传閸曨剙鍋嶉梺鍛婃煥閺堫剟寮查崼鏇ㄦ晬闁绘劕顕崢鍗炩攽閻愬弶顥滅紒缁樺笧缁粯绻濆顓犲幐闁诲繒鍋熼弲顐f櫏闁诲氦顫夊ú锕傚磻婵犲倻鏆﹂柣鏃傗拡閺佸棝鏌嶈閸撴瑩鍩㈠澶嬫櫜闁搞儮鏅濋敍婵囩箾鏉堝墽绋荤憸鏉垮暞缁傚秹鎮欓鍌滅槇闂侀潧楠忕徊鍓ф兜閻愵兙浜滈柟瀛樼箖瀹告繄绱掗鍓у笡闁靛牞缍佸畷姗€鍩¢崘銊ョ闂備浇顕х€涒晝绮欓幒鎴犲箵閻犳亽鍔庢稉宥嗘叏濡炶浜鹃梺鍝勮閸斿矂鍩ユ径濞㈢喐寰勯惂鍝ョɑ闁靛洤瀚版俊鎼佹晲閸涱厼袝闂備浇顕栭崰妤呮偡閳哄懌鈧線寮崼婵堫槹濡炪倖鎸荤换鍕矆閸曨垱鈷掗柛灞剧懄缁佺増銇勯弴鐔哄⒌鐎规洑鍗冲浠嬵敃閵堝浂妲稿┑鐘垫暩婵挳宕愭繝姘辈闁挎洖鍊归悡娆愩亜閺嶎偄浠滃ù婊呭娣囧﹪鎳犳0婵嗘闂佸疇顫夐崹鍧楀春閸曨垰绀冮柕濞у懌鍋″┑锛勫亼閸娿倝宕㈡ィ鍐ㄧ婵☆垯璀﹂崵鏇㈡偣閸ャ劎銈存俊鎻掔墦閺屾洝绠涢弴鐑嗘綌闂佸啿鎼幊蹇涙偂韫囨搩鐔嗛悹楦挎婢ф洟鏌涢弮鈧幐鎶藉蓟濞戙垹妫樻繛鍡欏亾妤旂紓鍌欐祰妞存悂骞愭繝姘闁告侗鍨抽惌娆撳箹鐎涙ɑ灏ù婊堢畺閺屾稑鈹戦崟顐㈠Б闂佹椿鍘介幐楣冨箟閹间焦鍋嬮柛顐g箘閻熴劑姊洪崫鍕靛剮缂佽埖宀稿濠氭偄閻撳海顦悷婊冪箳閺侇喖鈽夐姀锛勫幐闂佸憡渚楅崰妤呭磹閹扮増鐓涢悘鐐额嚙婵倿鏌熼鍝勨偓婵嗙暦閹烘垟妲堟慨妤€妫旂槐锟� ---闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛濠傛健閺屻劑寮崼鐔告闂佺ǹ顑嗛幐鍓у垝椤撶偐妲堟俊顖氭惈缁犺鈹戦悙鍙夆枙濞存粍绮撻幃鈥斥槈閵忥紕鍘卞┑鐐村灥瀹曨剟鐛Ο姹囦簻闁哄倹瀵чˉ銏℃叏婵犲懏顏犻柟鐟板婵℃悂濡烽敂鎯х稈闂傚倷鑳堕幊鎾诲吹閺嶎厼绠柨鐕傛嫹
开发学院软件开发Java 利用 Rational Build Forge 对基于 WebSphere App... 阅读

利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

 2009-11-11 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋挎瀬闁瑰墽绮崑鎰版煙缂佹ê绗ч柍褜鍓﹂崣鍐潖閸濆嫅褔宕惰娴犲ジ姊虹拠鑼闁煎綊绠栭幃楣冩倻閽樺鎽曢梺闈涱檧婵″洭宕㈤悽鍛娾拺閻熸瑥瀚烽崯蹇涙煕閻樺磭澧甸柕鍡楀€圭缓浠嬪川婵犲嫬骞堥梺纭呭閹活亞妲愰弴鐔哄ⅰ闂傚倷绶氬ḿ褍煤閵堝洠鍋撳顐㈠祮闁绘侗鍣i獮鎺懳旈埀顒傜不閿濆棛绡€闂傚牊绋戦弳娆徝瑰⿰鍫㈢暫闁哄矉缍佹慨鈧柍鎯版硾濠€杈ㄧ珶閺囩喓绡€婵﹩鍘鹃崢鐢告⒑缂佹ê濮﹂柛鎾村哺閹ɑ娼忛妸銈囩畾闂佸湱绮敮鐐存櫠濞戞氨纾肩紓浣贯缚濞插鈧娲栧畷顒冪亙闂佸憡鍔曢崯鐘诲礈濠靛牊宕叉繛鎴炨缚閺嗗棗鈹戦悩杈厡闁轰焦鐗滅槐鎾存媴娴犲鎽甸梺鍦嚀濞层倝鎮鹃悜钘夌闁规惌鍘介崓鐢告⒑閻熸澘鎮侀柣鎺炵畵閹骞栨担鍏夋嫽婵炶揪绲块崕銈夊吹閳ь剟姊洪幖鐐测偓鏍偋閻樿崵宓侀煫鍥ㄧ⊕閺呮悂鏌ㄩ悤鍌涘濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紓浣哄閸ㄥ爼寮诲☉銏犵疀闂傚牊绋掗悘鍫ユ倵閻熺増鍟炵紒璇插暣婵$敻宕熼姘鳖啋闁诲酣娼ч幗婊堟偩婵傚憡鈷戠痪顓炴媼濞兼劖绻涢懠顒€鏋庢い顐㈢箳缁辨帒螣閼测晜鍤岄梻渚€鈧偛鑻晶顔肩暆閿濆牆鍔垫い锔界叀閹繝濡舵径瀣帾闂佸壊鍋呯换鍐磻椤忓懐绠剧€瑰壊鍠曠花濠氬箚閻斿吋鈷戦悗鍦У閵嗗啴鏌ら崘鑼煟鐎规洘绻堥弫鍐焵椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈橀柣鐔稿姍濮婃椽鎮℃惔鈩冩瘣闂佺粯鐗曢妶绋跨暦閻戞ḿ绡€闁搞儜鍐ㄧギ闂備線娼ф蹇曟閺囥垹鍌ㄦい蹇撶墛閳锋垿鏌熼懖鈺佷粶闁告梹顨婇弻锟犲川椤旈敮濮囩紓浣稿€圭敮鐔妓囩€靛摜纾奸弶鍫涘妼缁楁碍绻涢悡搴g闁糕斁鍓濋幏鍛存煥鐎e灚缍楅梻鍌氬€峰ù鍥ь浖閵娾晜鍊块柨鏇炲€哥粻鏌ユ煕閵夘喖澧柡瀣╃窔閺岀喖宕滆鐢盯鏌¢崨顔藉€愰柡灞诲姂閹倝宕掑☉姗嗕紦闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亜顒㈡い鎰Г閹便劌顫滈崱妤€骞婄紓鍌氬€瑰銊╁箟缁嬫鍚嬮柛顐線缂冩洟姊婚崒娆戭槮婵犫偓闁秵鎯為幖娣妼缁愭鏌″搴′簽濞戞挸绉甸妵鍕冀椤愵澀娌梺缁樻尪閸庣敻寮婚敐澶婂嵆闁绘劖绁撮崑鎾诲捶椤撴稑浜炬慨妯煎亾鐎氾拷  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛銈呭閺屻倝宕妷锔芥瘎婵炲濮靛銊ф閹捐纾兼繛鍡樺笒閸橈紕绱撴笟鍥ф珮闁搞劌鐖兼俊鎾礃椤旂厧绐涢梺鍝勵槹閸ㄥ綊宕㈠ú顏呭€垫鐐茬仢閸旀碍銇勯敂璇茬仸鐎规洩绻濋獮搴ㄦ嚍閵壯冨妇闂傚⿴鍋勫ú锕€煤閺嶃劎澧¢梻鍌欐祰椤曆呪偓鍨浮瀹曟粓鎮㈡總澶嬬稁闂佹儳绻愬﹢杈╁閸忛棿绻嗘い鏍ㄧ閹牊銇勯銏⑿㈡い顏勫暣婵″爼宕卞Δ鈧~搴ㄦ⒑閸涘⿴鐒奸柛銉戝懎寮ㄥ┑鐘灱濞夋稖鐧岄梺缁樻煥閸氬鎮¢妷鈺傚€甸柨婵嗛閸樻挳鏌涚€n偅灏扮紒缁樼箓椤繈顢樺☉娆忣伖闂佽崵鍠愮划搴㈡櫠濡ゅ啯鏆滈柟鐑樻尵椤╂彃霉閻撳海鎽犻柣鎾存礋閺岀喖骞嗚閸ょ喖鏌嶉挊澶樻█闁哄苯绉剁槐鎺懳熼懡銈呭汲婵$偑鍊ら崑鍛崲閸儱绠犳繝濠傛噹閺嬪牊淇婇婵愬殭妞ゅ繐缍婂濠氬磼濞嗘埈妲梺纭咁嚋缁辨洜鍒掑▎鎾崇闁挎柨鎼禍濂告⒑閸濆嫷妲归柛銊у枛瀵悂寮崼鐔哄幐闂佸憡鍔х徊鑺ョ閸撗呯=濞达綀娅g敮娑氱磼鐎n偅灏扮紒鍌涘浮閺佸啴宕掑鎲嬬床婵犳鍠楅敃鈺呭礈閿曞倹鍊甸柟鎯板Г閳锋帒霉閿濆懏鎲搁柨娑樼Ф缁辨帡顢氶崨顓犱桓濡ょ姷鍋為崹鍨暦閸洦鏁嗛柛灞炬皑閵堬箓姊虹拠鎻掑毐缂傚秴妫欑粋宥夊冀椤撶偟鍝楁繛瀵稿Т椤戝棝鎮″▎鎾粹拺妞ゆ挶鍔庨悾鍗烆熆瑜滈崹閬嶅Φ閸曨垰妫橀柛顭戝枓閸嬫挾鎲撮崟顓涙敵婵犵數濮村ú锕傚磹闁垮浜滈煫鍥ㄦ尭椤忋倝鏌涚€n偅宕岀€殿喖鈧噥妾ㄥ┑鐐插悑閻楁洟鍩為幋锔藉亹閻庡湱濮撮ˉ婵嬫⒑缁嬭儻顫﹂柛鏂块叄楠炲顫㈠畝鈧悿鈧┑鐐村灦宀e潡鎮块崨瀛樷拺闁革富鍙€濡炬悂鏌涢悩鎰佹疁鐎殿喗鐓¢獮鏍ㄦ媴閸︻厼寮抽梻浣虹帛濞叉牠宕愰崷顓涘亾濮樼偓瀚�
核心提示:知识准备为了更好的理解本文,您需要掌握以下内容:J2EE 应用程序开发平台 IBM Rational Application Developer(RAD)的使用,利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建,用于构建 J2EE 应

知识准备

为了更好的理解本文,您需要掌握以下内容:

J2EE 应用程序开发平台 IBM Rational Application Developer(RAD)的使用。

用于构建 J2EE 应用的 ANT 工具。

WebSphere 应用服务器的部署以及 JMX 编程。

Rational Build Forge 的基本使用。

1. 应用场景

我们遇到复杂问题的时候,需要对问题进行细化并逐步实现。例如我们可以把一个复杂任务分解成若干简单任务来完成。在软件开发,构建和测试中也有很多工作可以通过一系列执行流程来自动化运行。Rational Build Forge 支持灵活的流程定制,通过它可以把复杂问题简单化和流程化,在这些方面大有用武之地。

迭代式增量开发过程中,开发和测试交替进行。新的代码植入应用之后,需要将其移植到测试环境进行测试。以开发和测试 B/S 架构的 J2EE 应用为例,我们现在有两个相同版本的 Windows 系统,一个是开发人员使用的开发环境,另外一个是测试环境。两台 Windows 系统上都安装了相同版本的 WebSphere 服务器,当开发完成之后,通过一系列的任务调度,将开发环境中的应用打包然后部署到测试机上,部署完成之后,通知测试人员进行测试工作。传统的工作方式如下图所示:


图 1. 传统工作方式
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

传统工作方式中,开发人员除了开发任务之外,还负责应用打包,上传可部署包和测试任务的通知提醒。测试人员在测试工作开始之前,需等待开发人员的通知提醒,然后安装部署包。此过程中我们来考虑以下问题:

应用构建的过程往往是个漫长的等待过程,可否将应用构建的过程自动化以节省开发人员的精力。

应用构建完之后,如果是支持多平台,如何将应用部署到不同的测试平台。

如何节省测试人员被动等待时间。只有当测试环境准备好之后,测试人员才开始测试工作,期间测试人员可以进行其他工作。

针对这些问题,我们需定义一系列有序的,可执行的任务来解决。如何管理及定制这些任务?此时我们就需要引入 Rational Build Forge,如下图所示:


图 2. 改进后的工作方式
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

如图 2 所示,Build Forge Server将自动完成应用打包等一系列以前由手动完成的任务,使得开发和测试人员的精力集中在各自的主要任务上。本文将用一个实例来描述如何利用 RBF 把这部分流程进行自动化整合,整个过程的逻辑如下图所示:


图 3. 整体逻辑图
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

实例将描述如何用 RAD 开发一个简单的 J2EE 应用 HelloWorld,然后用 Ant 将此应用打包成 EAR 可部署文件,通过 JMX 部署到测试环境,最后通过邮件的形式告之测试人员环境部署完毕。涉及到以下的功能模块:

开发环境:应用程序的开发环境,包括:

用于开发的应用服务器 WebSphere 和开发工具 RAD。

部署包构建工具 ANT 及相关执行脚本。

JMX 环境及相关执行脚本。

已安装的 Build Forge 客户端的 Windows 2003 32 位操作系统。

Build Forge Server:提供任务调度,管理和定制 , 功能包括:

将各执行脚本进行有序的整合。

获取开发环境中的应用。

将应用部署到测试环境中的 WebSphere。

以邮件的形式提醒测试人员测试环境已经部署完毕。

测试环境:应用测试的系统环境,包括:

用来测试应用的 WebSphere。

已安装的 Build Forge 客户端的 Windows2k3 32 位操作系统。

开发人员:开发应用,根据测试人员的反馈修改代码。

测试人员:测试应用各功能,根据测试结果将存在的问题反馈给开发人员。

2. 使用 Rational Application Developer(RAD)创建应用

2.1 创建动态 Web 项目

Rational Application Developer(RAD)是基于 Eclipse 的 J2EE 的开发平台 , 其对 WebSphere 进行了特别定制。RAD 能更好的和 IBM 产品相结合,相关信息可查阅 IBM 在线技术文档。

启动 RAD 之后,点击 " 文件 ",选择项目,然后在项目创建向导中选择动态 Web 项目:


图 4. 创建动态 Web 项目
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

项目名称 "HelloWorld",其他选项用默认就可以了,创建之后的项目结构在 RAD 中如下所示:


图 5. RAD 项目结构
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

其中 src 是放 Java 源代码的目录,WebContext 是放 JSP,XML 等文件的目录。

2.2 添加 Java Bean

点击 "src" 目录,选择新建 " 包 ",创建 "demo" 包。然后在此之下新建一个类 HelloWorld:

package demo; 
public class HelloWorld { 
private String name; 
public void setName(String name){ 
this.name=name; 
} 
 public String getName(){ 
 return name; 
 } 
} 

HelloWorld 是一个 Java Bean,其有一个属性 "name",通过 setName 方法可为其赋值,通过 getName 方法返回当前属性的值。

2.3 添加 JSP

点击 "WebContent",然后右键选择新建 "JSP",创建一个名为 HelloWorld 的 jsp 文件,并在 <body> 标签之内添加以下代码:

<jsp:useBean id="demo" class="demo.HelloWorld"/> 
<jsp:setProperty name="demo" property="name" value="HelloWorld"/> 
<jsp:getProperty name="demo" property="name"/> 

jsp:useBean id="demo" class="demo.HelloWorld":将 HelloWorld 实例化并以 "demo" 为名引用。

jsp:setProperty:将 HelloWorld 中 name 属性设置为 "HelloWorld"。

jsp:getProperty:返回 HelloWorld 中 name 属性值,也就是刚刚被赋值的 "HelloWorld"。

创建完 Java Bean 和 JSP 之后,保存所有工作,接下来我们将对此项目进行构建。

3. 用 ANT 构建 EAR 包

J2EE 应用程序的资源,如 EJB,Java Bean,JSP 以及 XML 等配置文件可以被打成 WAR 或者 EAR 包进行发布。Ant 作为 Apache 的一个项目,是一个基于 Java 的 build 工具。通过 Ant 可以拷贝文件,构建项目或生成一些特定代码。很多 IDE 都集成了 Ant 工具,本文将演示手动构建 EAR 的过程,更多关于 Ant 的信息可以查阅 Ant 网站。

3.1 搭建 ANT 运行环境

ANT 运行环境的安装很简单,下载安装文件之后,创建 "ANT_HOME" 的系统变量指向 ANT 的根目录,并将 <ANT_HOME>/bin 添加到系统路径。在命令行行中运行 ant 就可以测试是否安装成功。

3.2 将项目打包成 EAR

将项目打包需要一个 build.xml 文件来告诉 ANT 所有的配置信息。项目 HelloWorld 的目标任务是 "deploy",为了完成此任务,首先需要完成任务 "compile",然后完成任务 "web-war", 最后完成任务 "ear",配置如下:

<project name="HelloWorld" default="deploy" basedir="."> 
<property name="src.dir" value="src"/> 
<property name="WebContent.dir" value="WebContent"/> 
<property name="WEB-INF.dir" value="${WebContent.dir}/WEB-INF"/> 
<property name="META-INF" value="${WebContent.dir}/META-INF"/> 
<property name="build.dir" value="build"/> 
<property name="dist.dir" value="dist"/> 
………………………………………………… 
<target name="web-war" depends="compile"> 
 <war destfile="${dist.dir}/${ant.project.name}.war" 
 basedir="${WebContent.dir}" webxml="${WEB-INF.dir}/web.xml"/> 
</target> 
<target name="ear" depends="web-war" description="create EAR"> 
 <ear destfile="${dist.dir}/HelloWorld.ear" 
 appxml="${META-INF}/application.xml"> 
 <fileset dir="${dist.dir}/"> 
 <include name="HelloWorld.war"/> 
 </fileset> 
 </ear> 
</target> 

<project name="HelloWorld" default="deploy" basedir=".">: 设置项目名为 "HelloWorld",默认需要执行的任务是 "deploy",基本路径是 build.xml 所在的当前目录。

<property name="src" value="src"/>:设置属性 src.dir 的值为当前路径 src。

<target name="web-war" depends="compile">:目标 web-war 的任务是将 basedir 指向的文件打包到 desfile 所指向的文件中去。

<target name="ear" depends="web-war" description="create EAR">:目标 ear 完成的任务是将 HelloWorld.war 加上 application.xml 打包至 HelloWorld.ear。

运行 ANT 命令:ant -buildfile <build.xml location>,完成之后,会在项目所在路径的 dist 文件夹下面创建 HelloWorld.ear 可部署包。

4. 使用 JMX 来部署应用

有两种方式可向 WebSphere 部署 EAR 包:手动方式和编程方式。手动方式是通过 WebSphere 的管理控制台提供的应用程序添加向导来完成,编程方式需要了解 WebSphere 对于 jython 或者 JMX 的支持,由于后者具有更大的适用范围,文章将集中讨论 JMX。

4.1 JMX 简介

JMX 是 Application Server 的核心管理功能。应用服务器包含有一个 JMX 代理。所有系统组件都被当作 MBean 受到监控。WebSphere Application Server 的 JMX 代理支持两类连接器,分别是 RMI/IIOP 和 SOAP/HTTP(S),该代理提供对服务器的资源的远程访问。Application Server 所含的所有管理工具都使用这些 JMX 工具来实现其功能。

4.2 安装 EAR 应用

更多基于 JMX 的 WebSphere 编程可查阅 IBM 的 WebSphere 在线文档。下面用一个实例来说明如何使用 JMX 的接口来安装一个 EAR 应用 , 相关代码可在本文的最后下载。

初始化 EAR 部署包:

package connection; 
public class Install { 
 public static void main (String [] args) { 
try { 
 String earFile = "C:/HelloWorld.ear"; 
 String appName = "HelloWorld"; 
 Hashtable prefs = new Hashtable(); 
 prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault()); 

earFile:EAR 部署包的全路径,必须是部署目标机的本地可寻址路径。

appName:J2EE 应用程序的上下文名称,以 http://localhost:9080/HelloWorld 为例,"/HelloWorld" 就是一个上下文。

prefs:用来放置部署描述信息,例如,系统 locale 信息。

创建客户连接信息:

String host = "XXXXX"; 
String port = "8880"; 
String target="WebSphere:cell=WIN2K3264Node01Cell,node=WIN2K3264Node01,server=server1"; 
Properties config = new Properties(); 
config.put (AdminClient.CONNECTOR_HOST, host); 
config.put (AdminClient.CONNECTOR_PORT, port); 
config.put (AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); 
System.out.println ("Config: " + config); 
AdminClient _soapClient = AdminClientFactory.createAdminClient(config); 
AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient); 

Host: WebSphere 服务器所在的主机 IP 或者机器名。

Prot: 基础版本 WebSphere 的 JMX 监听端口是 8880。

Target: 目标 WebSphere 的节点信息和服务名称,在 WebSphere 的管理页面可以看到。

AdminClient.CONNECTOR_TYPE_SOAP:设置客户端代理的连接方式。此处采用 SOAP 的方式。

AppManagementProxy :程序管理代理,它是 AppManagement 接口的实现。我们用这个类来进行 WebSphere 应用的安装,修改,删除等操作。

安装应用:

Hashtable module2server = new Hashtable(); 
 module2server.put("HelloWorld.war,WEB-INF/web.xml", target); 
 module2server.put ("*", target); 
 options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, module2server); 
 proxy.installApplication (earFile, appName, options, null); 

module2server: 存放部署描述与对应的 WebSphere 节点之间的信息。

Proxy.installApplication: 通过代理安装应用。安装之后的应用默认是不启动的。

注意:实例中的 WebSphere 都没有进行安全设置,如果启动了 WebSphere 安全设置,那么必须在初始化 WebSphere 客户端连接的时候添加对应的管理用户及密码。EAR 需放置在目标测试机的可访问路径。Host, appName 和 Target 需相应的设置为实际测试环境的值。

5. 利用 Build Forge 进行自动化构建

IBM Rational Build Forge 是一个流程执行框架,简单来说,它有以下功能:

1:Build Forge Server 能够有序管理各执行脚本,根据执行结果进行各种定制化的后续步骤。

2:它能够动态添加或删除接入的系统。

3:强大的日志管理以及历史数据记录信息。

此外,RBF 还有以下优点:

支持多平台,例如 Windows, Linux, AIX, HP-UX, Solaris, System I, System Z。

易于管理,通过 RBF 提供的管理页面可以方便的定制和共享执行脚本。

支持并发,RBF 支持并行运行 , 可以将多个任务同时分配到不同的机器上运行。

定时执行,RBF 可以定时运行指定的任务,例如我们可以指定中国时间每个工作日凌晨 5 点运行某个任务。

资源消耗少,RBF 客户端很小,可以设定为在后台运行,所占的系统资源也很少。

5.1 目标任务

通过前面章节的铺垫,至此,我们拥有以下功能组件:

开发环境里及项目工作区,包含 HelloWorld 的 Java 代码以及 JSP 等文件。

Ant 构建代码,可将 HelloWorld 应用打包成 EAR 可部署包。

基于 JMX 的远程 WebSphere 部署代码。

自动化构建需要完成以下任务:

将开发环境中的 HelloWorld 项目用 Ant 进行构建,得到应用部署文件 HelloWorld.ear。

上传 HelloWorld.ear 至测试环境的本地路径。

执行 JMX 远程部署代码,由于远程部署容易扩展成一对多的关系,并且为了简单起见,文章就以开发环境作为远程部署代码的执行机。在实际开发过程中,应减少对开发环境的干扰。

邮件提醒通知。

5.2 Build Forge 工作过程

Build Forge Server 中的最小执行单元是项目,其目的是完成业务逻辑。每个项目可以包含若干有序或并行的执行步骤。


图 6. 项目和步骤之间的关系
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图 5 所示的步骤序列代表了其运行的先后,展示了业务逻辑执行的过程

5.3 在 Build Forge Server 中添加服务器

RBF Server 中以服务器的概念来描述其接入的系统 :


图 7. Build Forge Server 中的服务器
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

我们需要将开发环境和测试环境作为服务器添加到 Build forge Server,RBF Server 的安装过程和设置可以参考其相关文档,本文不再描述,添加服务器的设置如下:


图 8. 添加服务器
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Name:测试机的名称。此处我们命名为 "HelloWorld_Test"。

Path:Build Forge 客户端初始化的路径,建议选择 "/" 作为路径。

host:测试机的 IP 地址。

Authentication:由于 Build Forge 需要访问测试机资源,所以必需提供测试机的认证用户和密

码,认证设置错误会导致连接失败。认证的创建是点击 " 服务器 ",然后选择 " 服务器认证 "。

访问:采用默认的值,此处涉及到 RBF Server 的权限。

保存之后,我们可以进行连接测试,如果连接通过则表明测试机和 Server 之间已经能够通信,如果提示连接错误,需根据相应的提示信息进行调试。同样,我们也为开发环境创建服务器 "HelloWorld_Dev"。

把服务器加入到 Build Forge Server 之后,我们需要设置一个 " 选择器 " 供项目查找所有符合条件的测试机。点击 " 服务器 ",选择 " 添加选择器 ",基本信息如下:


图 9. 添加选择器
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Name:选择器的名称,不能重复。

Access:采用默认的 Build Engineer。

创建完之后,点击进入选择器设置:


图 10. 设置选择器
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Name:选择器可以有多个名称,每一个名称都对应于服务器的某个属性。例如 BF_NAME 指的是在 RBF 里面添加的服务器的名称。

Operator:"==" 指的是 Name 需要匹配后面的 Value。

选择器创建之后,在项目中就可被引用,项目在运行开始之前,会根据选择器的信息查找符合条件的服务器,然后在这些服务器上执行。

5.4 在 Build Forge Server 中添加项目

项目是执行单元,所以在创建项目之前,我们需要搞清楚此项目在哪台目标机上执行。就本文而言,创建的项目将在开发环境中运行。RBF 中的项目创建如下图所示:


图 11. 创建项目
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Name:项目的名称,必须填写。

Selector:项目对应的选择器,此处采用图 8 创建的 "Selector_HelloWorld_Test"。

简单起见,其他选项可采用默认值,然后保存项目。

5.5 为项目添加步骤

点击创建好的项目,进入步骤编辑页面。每一个步骤需要对应一个执行过程来完成自动化构建的任务,根据章节 7.1,我们添加以下有序步骤:

步骤 1:将开发环境中的 HelloWorld 项目用 Ant 进行构建,得到应用部署文件 HelloWorld.ear。

步骤 2:上传 HelloWorld.ear 至测试环境的本地路径。

步骤 3:执行 JMX 远程部署代码。

步骤 4:邮件提醒通知。

每一个步骤都需要一个入口,我们可以用 bat/shell 脚本来运行对应的 Java 代码,例如对于步骤 4,我们有一个 SendReport 的类。我们可以在 bat 脚本中用以下方法调用:

set jre_bin=C:\jdk1602\jre\bin 
set JavaDir=C:\Report 
cd /d %jre_bin% 
%jre_bin%\Java.exe -classpath .;C:\Java_mail\mail.jar;%JavaDir%\ mail.SendReport 

SendReport:邮件发送应用程序,处于包 mail 下面。

Jre_bin:JRE 的运行 bin 目录。在此目录中可以运行 Java.exe, Javac.exe 等命令。

JavaDir:SendReport 类所处路径。

Java.exe -claspath:Java 执行命令,classpath 指定了运行所需的 jar 文件,用;隔开。

将此 bat 文件命名为 mail.bat,放在 "C:\scripts" 目录下。然后创建此 bat 对应的步骤如下所示:


图 12. 创建步骤
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Name:步骤的名称。

Active:默认 " 已启用 ",表示此步骤会被运行到。

Directory:Build Forge 客户端起始执行目录,会在此目录下创建一些临时文件。

Path:推荐使用 " 绝对 ",默认是相对路径。

Command:步骤执行的命令。此例中,首先切换到执行脚本所在的目录,然后运行上述邮件发送的执行脚本。

Timeout:单位时间是秒,超过这个时间段,命令执行将结束并执行下一个步骤。所以对于某些运行时间比较长的命令需设置较长的等待时间。

Result:判断步骤是否正确执行的标准。这个是很重要的设置,步骤执行失败有两种情况,第一种是 Build Forge 本身系统出错,例如脚本运行失败。另一种是用户自定义的错误,可以在项目下面的日志过滤器中设置。

类似的我们可以为其他任务创建相应的运行脚本和步骤,在实际运行环境中,请根据实际情况可以增加和修改项目中的步骤。

5.6 创建定时任务

自动化构建如果是定时进行,例如每个工作日的上午八点,那么采用 RBF Server 提供的调度机制能够省去手动执行项目的麻烦。点击 RBF Server 主页面上的 "Schedules",然后选择 "Add Scheduled Run",基本信息如下:


图 13. 创建定时任务
利用 Rational Build Forge 对基于 WebSphere Application Server 的应用进行自动化构建

图片看不清楚?请点击这里查看原图(大图)。

Description:描述信息,最好和被调度的项目名称一致。

Project:选择需要调度的项目。

Method:" 活动 " 指的是运行此调度,还有两个选项,一个是 " 非活动 " 和 " 一次 ",分别表示禁止调度和只运行一次。

Minutes:范围是 0 到 59,* 代表任意分钟,/ 代表间隔的分钟数。

Hours:范围是 0 到 23,* 代表任意小时,/ 代表间隔的小时数。

Dates:指月份的天数,范围是 1 到 31,* 代表任意天数,/ 代表月间隔的天数。

Months:一年中的月份,范围是 1 到 12。* 代表任意月份,/ 代表间隔的月数。

Days:一周的天数,范围是 0 到 6,周日是 0。* 代表任意天,/ 代表周间隔的天数。

例如以下参数指代的是从周一到周五,每天早上 5 点运行项目调度。

分钟 小时 日期 月份
* 5 * * 1-5

以下参数指代的是从周一到周五,每隔 30 分钟运行项目调度。

分钟 小时 日期 月份
*/30 * * * 1-5

注意,项目调度的时间是从 Build Forge Server 所在安装服务器上获得,需要首先调校好服务器上的时间。然后进入管理,点击用户,将用户下面的时区选择为正确的时区。

调度创建好之后,自动化构建过程就不再需要人工干预。

6. 总结

在软件开发过程中,有一些工作的流程变化小且需要频繁的进行维护。将这些工作抽取并细化成可执行的自动化步骤能够节省工作量,Build Forge 提供了自定义流程方面的支持,通过它还可以对所有的执行脚本和步骤进行统一的维护。

本文用 HelloWorld 实例展现了一个 J2EE 应用从开发到部署的全过程,重点描述如何把构建和部署两部分进行自动化实现,对涉及的关键技术给出了相应的解决方案。从中可以看到 Build Forge Server 起到了管理和衔接的重要作用,其良好的任务定制框架使得日后的迁移工作变得简单。假如我们需要从 WebSphere 切换到 TomCat 应用服务器的话,只需要修改部署部分的代码,其他业务的执行过程可以重用。如果我们需要对现有执行步骤的顺序进行调整的话,通过 Build Forge Server 就可方便的完成,减少编程维护的工作量。

免责声明

本文仅代表本人观点,并非代表 IBM 的立场、策略和观点。IBM 并不保证这些信息的正确、完整或充分性。IBM 不会对本文所包含信息中的错误、遗漏或不充分性承担责任并为此做出解释。

附录 A

为了运行本文附录中的 Java 代码,您需要安装以下 IBM 产品:

RAD 版本:7.5。

WebSphere 版本:7.0。

运行时需要引入的 Eclipse 插件(在 Eclipse 插件目录可以找到):

org.eclipse.equinox.common_3.3.0.v20070426.jar

org.eclipse.osgi_3.3.0.v20070530.jar

WebSphere 运行时支持:

<WAS_Install>\WebSphere\AppServer\runtimes 路径下的所有 jar 文件。

WebSphere 7.0 运行存根,RAD 自带的用户库。

Tags:利用 Rational

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接