国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
創(chuàng)建新的門戶: 第 5 部分:開(kāi)發(fā)、構(gòu)建和部署門戶

級(jí)別: 中級(jí)

Anthony Bernal (abernal@us.ibm.com), 高級(jí) IT 咨詢專家, IBM Software Services for Lotus
Varad Ramamoorthy (varad@us.ibm.com), IT 咨詢專家, IBM Software Services for Lotus
Yixing Gong (yixingg@us.ibm.com), 高級(jí) IT 專家, IBM Global Business Services
John Barron (jwbarron@us.ibm.com), 高級(jí) IT 專家, IBM Global Business Services
Julia Weatherby (jw@us.ibm.com), IT 專家, IBM Software Services for WebSphere

2006 年 8 月 14 日

設(shè)計(jì)流程,并建立用于開(kāi)發(fā)、構(gòu)建和部署門戶的環(huán)境。了解如何控制源代碼和用于構(gòu)建組件、管理持續(xù)集成和部署到測(cè)試環(huán)境的各種方法,以及如何部署生產(chǎn)發(fā)布程序包。了解相關(guān)最佳實(shí)踐、可使用的工具和策略,以創(chuàng)建您自己的流程。

引言

創(chuàng)建新的門戶系列的這一部分中,您將了解如何創(chuàng)建自己的流程,以便在 WebSphere Portal 環(huán)境中構(gòu)建和部署代碼組件??梢詫⒉煌募夹g(shù)和產(chǎn)品集成到您能夠管理的內(nèi)聚系統(tǒng)中。

  • 可以將整個(gè)任務(wù)視為一系列流程:
  • 控制源代碼和構(gòu)建組件
  • 持續(xù)集成和部署到測(cè)試環(huán)境
  • 定義和部署生產(chǎn)發(fā)布程序包

本文提供了一些最佳實(shí)踐和通用信息,用于幫助您創(chuàng)建自己的流程。文中概略介紹了編譯(或構(gòu)建)代碼、在門戶框架內(nèi)部署自定義門戶應(yīng)用程序的基本流程和相關(guān)基礎(chǔ)設(shè)施。

構(gòu)建和部署流程為何重要?

那么,此討論為什么重要呢?如果您進(jìn)行過(guò)任何類型的 IT 或軟件項(xiàng)目,就可能知道這個(gè)問(wèn)題的答案;不過(guò),為了清楚起見(jiàn),我們將在此處說(shuō)明其原因。

構(gòu)建和部署流程可幫助確保以下事項(xiàng):

  • 代碼將由所有開(kāi)發(fā)人員進(jìn)行簽入、存儲(chǔ)和版本控制,因此不會(huì)丟失任何重要的智力資產(chǎn)。
  • 相關(guān)項(xiàng)不能在未經(jīng)過(guò)可靠性流程的情況下進(jìn)入生產(chǎn)環(huán)境。
  • 如果出現(xiàn)錯(cuò)誤或者對(duì)系統(tǒng)進(jìn)行了錯(cuò)誤的更新或配置更改,系統(tǒng)上的代碼庫(kù)可以重新生成。

雖然在本文中您還會(huì)了解到某項(xiàng)流程之所以重要的其他原因,但主要值得注意的方面如下:

  • 門戶及其相關(guān)基礎(chǔ)設(shè)施
  • 門戶應(yīng)用程序或自定義代碼

這些因素是相互交錯(cuò)的;不過(guò)每個(gè)因素都會(huì)具有其獨(dú)特的設(shè)計(jì)特點(diǎn)和挑戰(zhàn)。理想的結(jié)果是,這些相關(guān)項(xiàng)能彼此協(xié)作,從而提供工作正常的門戶來(lái)供客戶使用。

此流程如何影響我的項(xiàng)目?

最開(kāi)始的時(shí)候,您可能看不到配備構(gòu)建和部署流程的任何好處。事實(shí)上,可能看起來(lái)要進(jìn)行大量的工作,要實(shí)現(xiàn)更多的結(jié)構(gòu)和規(guī)則,但其回報(bào)卻甚微。不要被暫時(shí)現(xiàn)象所迷惑,因?yàn)樵摿鞒痰膬r(jià)值將可能很快就會(huì)體現(xiàn)出來(lái)。

例如,項(xiàng)目生命周期中的一個(gè)重要時(shí)期就是正式投入使用前的那段時(shí)間?;A(chǔ)設(shè)施已經(jīng)就位,已將部分代碼部署到環(huán)境中,且正在進(jìn)行測(cè)試。在大多數(shù)環(huán)境中,會(huì)進(jìn)行多種類型的測(cè)試,如:

  • 質(zhì)量保證測(cè)試
  • 用戶接受度測(cè)試
  • 負(fù)載或性能測(cè)試

其中的每種測(cè)試類型都可能導(dǎo)致開(kāi)發(fā)團(tuán)隊(duì)根據(jù)反饋再進(jìn)行一次開(kāi)發(fā)循環(huán),從而可能創(chuàng)建軟件的新版本或錯(cuò)誤修復(fù)程序。

而這正是很多項(xiàng)目出現(xiàn)錯(cuò)誤的地方。隨著不斷創(chuàng)建各個(gè)組件的不同版本并需要對(duì)其進(jìn)行部署和測(cè)試,能夠在不同環(huán)境中快速構(gòu)建、部署和測(cè)試就變得至關(guān)重要了。同樣重要的是,需要知道每個(gè)環(huán)境中部署了每個(gè)組件的哪些版本以及測(cè)試的結(jié)果如何。

沒(méi)有一個(gè)流程適合所有的情況。不同的組織需要采取不同的方法。團(tuán)隊(duì)組織結(jié)構(gòu)、行政結(jié)構(gòu)、代碼存儲(chǔ)庫(kù)以及構(gòu)建工具的選擇都會(huì)影響您的流程的工作方式。您可以選擇本文中提出的觀點(diǎn)來(lái)設(shè)計(jì)自己的流程。

門戶的流程是否與其他項(xiàng)目的流程不同?

就本質(zhì)而言,門戶與其他 J2EE 項(xiàng)目并沒(méi)有什么不同;不過(guò),門戶框架的確有一些限制和挑戰(zhàn)。您需要確定如何設(shè)置項(xiàng)目以在 IDE 內(nèi)最好地工作和支持一致的構(gòu)建,還要確定如何將不同的組件部署到不同的環(huán)境中。

構(gòu)建 Java 組件與大部分項(xiàng)目基本相同,特別是 J2EE 或服務(wù)器端組件更是如此。主要區(qū)別是會(huì)使用不同的庫(kù)和 API,且需要對(duì)項(xiàng)目進(jìn)行恰當(dāng)?shù)脑O(shè)置,以充分利用您的 IDE。

流程的部署部分可以使用與部署非門戶 Web 應(yīng)用程序時(shí)不同的工具或方法。門戶和 WebSphere Portal環(huán)境要求進(jìn)行額外的配置工作,而不僅是安裝 Portlet 或組件。您需要考慮門戶布局和訪問(wèn)控制問(wèn)題;可以使用特定于 WebspherePortal 的 xmlaccess命令進(jìn)行配置、版本控制和部署工作。本文稍后將介紹有關(guān)這些注意事項(xiàng)的更多信息,另外還會(huì)提供一些可應(yīng)用到您的項(xiàng)目構(gòu)建和部署流程的技巧。





回頁(yè)首


建立開(kāi)發(fā)流程

處理開(kāi)發(fā)、構(gòu)建和部署問(wèn)題時(shí),需要考慮的問(wèn)題的確全部都與流程相關(guān)。開(kāi)發(fā)人員并不太喜歡存在大量流程,因?yàn)樗麄兏杏X(jué)到流程對(duì)其形成束縛,無(wú)法盡可能快速方便地完成相應(yīng)的工作。實(shí)際上,我們的目標(biāo)是相同的;即,我們的目標(biāo)是建立一個(gè)簡(jiǎn)單的、不會(huì)帶來(lái)干擾的流程。這個(gè)方法是成功的關(guān)鍵,該流程應(yīng)始終從開(kāi)發(fā)人員角度考慮問(wèn)題。堆砌一些技術(shù)步驟或復(fù)雜步驟,并試圖強(qiáng)制團(tuán)隊(duì)遵循這些步驟,這樣的做法可能并不會(huì)非常有效。相反,應(yīng)該提供一系列簡(jiǎn)單的步驟,在其中使用能集成大家當(dāng)前使用的一系列工具且能與之良好協(xié)作的工具。

除了流程定義外,還要?jiǎng)?chuàng)建開(kāi)發(fā)標(biāo)準(zhǔn)和約定。我們將首先完成這項(xiàng)任務(wù),然后進(jìn)行流程定義,以提出一些您可能希望在自己的項(xiàng)目開(kāi)發(fā)流程定義中加入的要點(diǎn)。

什么是開(kāi)發(fā)標(biāo)準(zhǔn)?

開(kāi)發(fā)標(biāo)準(zhǔn)提供一組可重用的常識(shí)性指導(dǎo)原則,開(kāi)發(fā)人員在交付代碼模塊或組件時(shí)應(yīng)該遵循這些指導(dǎo)原則。通過(guò)為項(xiàng)目定義一組初始標(biāo)準(zhǔn)和模板,可以向團(tuán)隊(duì)傳達(dá)體系結(jié)構(gòu)、設(shè)計(jì)和實(shí)現(xiàn)指南。通過(guò)列出這些標(biāo)準(zhǔn),還可確定開(kāi)發(fā)人員在編寫(xiě)各種模塊的代碼時(shí)的預(yù)期行為。沒(méi)有任何標(biāo)準(zhǔn),或未在開(kāi)發(fā)流程中包含任何初始想法,可能在部署時(shí)或以后為各個(gè)模塊提供支持時(shí)出現(xiàn)混亂。

定義標(biāo)準(zhǔn)時(shí),您需要符合 WebSphere Portal 提供的框架。您需要知道和理解各種即時(shí)可用的功能,以確保您的設(shè)計(jì)將與 WebSphere Portal 協(xié)同工作——而不是對(duì)其造成阻礙。如果不熟悉 WebSphere Portal,這些簡(jiǎn)單的指導(dǎo)原則可在您開(kāi)始首個(gè)門戶應(yīng)用程序時(shí)提供幫助。

  1. 從小項(xiàng)目開(kāi)始。恰當(dāng)?shù)卮_定項(xiàng)目范圍,避免一開(kāi)始就著手構(gòu)建大型門戶。通過(guò)不會(huì)變得過(guò)大而失控的初始項(xiàng)目獲得一些實(shí)際的經(jīng)驗(yàn)。
  2. 借助 WebSphere Portal 專家的力量。此人應(yīng)該能在開(kāi)發(fā)首個(gè)門戶的整個(gè)過(guò)程中提供持續(xù)的支持。即使您的團(tuán)隊(duì)在使用 Java™ 方面經(jīng)驗(yàn)豐富,WebSphere Portal 專家也能夠幫助您充分利用此框架和提供體系結(jié)構(gòu)支持。

由于每個(gè)項(xiàng)目彼此不同,各自的要求差異很大,因此您需要將標(biāo)準(zhǔn)定義與環(huán)境定義分離開(kāi)來(lái)。即,創(chuàng)建一個(gè)獨(dú)立的開(kāi)發(fā)環(huán)境設(shè)置和配置 文檔來(lái)說(shuō)明具體的配置信息,并在構(gòu)建環(huán)境過(guò)程中對(duì)其進(jìn)行維護(hù)。其中包括以下信息:

  • 命名約定
  • 錯(cuò)誤和異常處理
  • .war 和 .ear 文件結(jié)構(gòu)
  • 單元和功能測(cè)試指導(dǎo)原則
  • 源代碼控制管理 (SCM) 流程指導(dǎo)原則
  • 環(huán)境設(shè)置
  • 具體庫(kù)或代碼順序

不過(guò),不要局限于項(xiàng)目或開(kāi)發(fā)工作的標(biāo)準(zhǔn)。沒(méi)有任何指導(dǎo)原則能處理可能遇到的所有情況。有時(shí)會(huì)遇到無(wú)法應(yīng)用當(dāng)前標(biāo)準(zhǔn)的情況。遇到這種情況時(shí),請(qǐng)花一些時(shí)間深入分析一下情況,并進(jìn)行以下工作。

  • 就遇到的情況與團(tuán)隊(duì)或項(xiàng)目負(fù)責(zé)人以及一起合作的其他開(kāi)發(fā)人員進(jìn)行溝通。如果問(wèn)題很大,或您認(rèn)為其他人可能遇到類似的情況,舉行一個(gè)簡(jiǎn)短的會(huì)議來(lái)討論和制訂解決方案。
  • 如果需要更改標(biāo)準(zhǔn),或者在特殊情況下需要違反標(biāo)準(zhǔn),請(qǐng)對(duì)其加以記錄!讓其他人知道指南中或代碼中違反標(biāo)準(zhǔn)的情況,并說(shuō)明為什么
  • 確定所采用的方法存在的任何問(wèn)題和可能導(dǎo)致出現(xiàn)此情況的條件。
  • 最后,通知標(biāo)準(zhǔn)文檔的所有者,讓他們知道您所遇到的情況。其他人可以從您的經(jīng)驗(yàn)中獲益,且應(yīng)該對(duì)指南進(jìn)行更新。

標(biāo)準(zhǔn)為什么重要?

要提高開(kāi)發(fā)流程的標(biāo)準(zhǔn)化程度的原因很多。您可能已經(jīng)遇到過(guò)需要復(fù)查或修改其他團(tuán)隊(duì)成員編寫(xiě)的代碼的情況。即使是最好的程序員,測(cè)試、復(fù)查和調(diào)試不遵循任何標(biāo)準(zhǔn)的代碼也是一項(xiàng)艱巨的任務(wù)。由于無(wú)法理解而剔除代碼并重新編寫(xiě)的情況真是太多了。

遵循設(shè)計(jì)良好的編程標(biāo)準(zhǔn)能提高所交付的代碼內(nèi)的一致性,并能夠提供更優(yōu)質(zhì)的代碼,從而更便于其他開(kāi)發(fā)人員理解和維護(hù)。設(shè)計(jì)良好且文檔完善的代碼可減少長(zhǎng)期維護(hù)成本,還能減少將構(gòu)件提供給其他團(tuán)隊(duì)或團(tuán)隊(duì)成員時(shí)的開(kāi)銷。

分離關(guān)注點(diǎn)

我們所指的關(guān)注點(diǎn) 分離階段是指使用不同的環(huán)境控制組成部署發(fā)布版本的代碼流和其他文件。保持不同環(huán)境彼此獨(dú)立,且僅允許文件通過(guò)已定義的流程傳播,可幫助確保構(gòu)建流程中的各個(gè)關(guān)鍵要素,如控制、可重復(fù)性和可靠性。

圖 1 顯示了開(kāi)發(fā)工作站和最終生產(chǎn)環(huán)境之間的代碼流,我們以此來(lái)說(shuō)明關(guān)注點(diǎn)分離的概念。如果您能理解這個(gè)流和環(huán)境分離,則可以在構(gòu)建和部署流程進(jìn)行期間對(duì)環(huán)境進(jìn)行有效控制。


圖 1:構(gòu)建和部署流程


開(kāi)發(fā)團(tuán)隊(duì)成員工作站

大部分開(kāi)發(fā)人員都在自己的本地工作站上工作。過(guò)去數(shù)年一直是這樣,目前并沒(méi)有需要改變這種方法的切實(shí)理由。當(dāng)目標(biāo)環(huán)境是 WebSpherePortal 時(shí),使用 Rational Application Developer for WebSphere 及其 Portal TestEnvironment的開(kāi)發(fā)人員的效率會(huì)非常高。這些工具的設(shè)置過(guò)程非常簡(jiǎn)單。還可以考慮使用包含目標(biāo)環(huán)境的開(kāi)發(fā)映像。這將允許編程人員在環(huán)境被破壞時(shí)進(jìn)行重置。

在某些情況下,開(kāi)發(fā)人員可能需要在自己的開(kāi)發(fā)工作站上有完整的門戶安裝;例如,您可能希望使用正確的目錄服務(wù)器 (LDAP) 和數(shù)據(jù)庫(kù)來(lái)反映生產(chǎn)中使用的組件。構(gòu)建安全組件的開(kāi)發(fā)人員需要在其開(kāi)發(fā)環(huán)境中設(shè)置與生產(chǎn)環(huán)境中類似的安全機(jī)制。

開(kāi)發(fā)構(gòu)建服務(wù)器

有些團(tuán)隊(duì)對(duì)獨(dú)立構(gòu)建服務(wù)器和獨(dú)立開(kāi)發(fā)集成與測(cè)試的需求不甚明了。事實(shí)上,沒(méi)有硬性指導(dǎo)原則規(guī)定如何使用這些環(huán)境。我們將告訴您一種方法和這方面的相關(guān)建議,但您可以使用自己的策略來(lái)管理這些環(huán)境。

主要的想法是將構(gòu)建(或編譯)和打包軟件的流程從開(kāi)發(fā)人員的工作臺(tái)分離出來(lái)。通常,構(gòu)建服務(wù)器將是一臺(tái)物理計(jì)算機(jī),但不是任何開(kāi)發(fā)人員的工作站。不過(guò),在小型環(huán)境中,構(gòu)建服務(wù)器也可以是位于開(kāi)發(fā)人員工作站上的一個(gè)邏輯獨(dú)立體。關(guān)鍵是,要確保所有進(jìn)入構(gòu)建流程的組件都來(lái)自版本控制,而不是來(lái)自其他工作站或計(jì)算機(jī),以便確保每個(gè)構(gòu)建操作都能從相同的單一源重復(fù)。

我們建議您嚴(yán)格執(zhí)行這個(gè)實(shí)踐。建立了此流程后,在出現(xiàn)構(gòu)建操作時(shí),通過(guò)源控制更新最新代碼或缺失的 jar 只需要很少的時(shí)間。

開(kāi)發(fā)集成和測(cè)試環(huán)境

對(duì)開(kāi)發(fā)集成環(huán)境采用類似的方法。除了通過(guò) SCM 或構(gòu)建存儲(chǔ)庫(kù)外,不應(yīng)將任何代碼部署到此計(jì)算機(jī)上。開(kāi)發(fā)人員需要訪問(wèn)此計(jì)算機(jī)來(lái)檢查日志和查看結(jié)果;不過(guò),永遠(yuǎn)都不應(yīng)該允許他們部署自己的代碼,因?yàn)檫@樣會(huì)導(dǎo)致以下問(wèn)題:

  1. 破壞可重復(fù)性。這會(huì)使得很難隨意重新創(chuàng)建部署或組件。
  2. 當(dāng)多人在此級(jí)別使用單臺(tái)計(jì)算機(jī)時(shí),診斷沖突和環(huán)境故障會(huì)變得更為困難。

團(tuán)隊(duì)對(duì)此方法的一個(gè)可能的擔(dān)心是,對(duì)環(huán)境施加約束可能會(huì)減緩開(kāi)發(fā)團(tuán)隊(duì)的工作進(jìn)度。若要解決此問(wèn)題,可以允許部分或全部開(kāi)發(fā)人員在其本地工作站上安裝完整的門戶基礎(chǔ)設(shè)施,或者簡(jiǎn)化構(gòu)建流程來(lái)包含持續(xù)集成和部署,以便能自動(dòng)構(gòu)建和部署組件。

發(fā)布環(huán)境

發(fā)布環(huán)境絕對(duì)遠(yuǎn)離大部分團(tuán)隊(duì)成員,不過(guò)部署和配置有這樣的需求時(shí)除外。通常需要多發(fā)布環(huán)境來(lái)避免進(jìn)行多項(xiàng)測(cè)試工作時(shí)環(huán)境間出現(xiàn)沖突。質(zhì)量保證(Quality Assurance,QA)、用戶接受度測(cè)試(User AcceptanceTesting,UAT)、性能和壓力測(cè)試都可能帶來(lái)需要進(jìn)行評(píng)估的問(wèn)題。

由于禁止開(kāi)發(fā)人員訪問(wèn)這些環(huán)境,因此需要采用某種方法來(lái)允許開(kāi)發(fā)人員在不同的計(jì)算機(jī)上查看和配置日志,以便能夠進(jìn)行問(wèn)題診斷??梢韵蛱囟ㄓ脩羰谟栌邢拊L問(wèn)權(quán)限。或者,可以允許在不同計(jì)算機(jī)上通過(guò)網(wǎng)頁(yè)訪問(wèn)某些日志和屬性文件。

控制此流程

開(kāi)發(fā)負(fù)責(zé)人應(yīng)自己(或指定某人)控制源代碼管理流程,這樣才是團(tuán)隊(duì)管理流程,而不是流程管理團(tuán)隊(duì)。此人要確保簽入所有代碼,并已準(zhǔn)備好進(jìn)行構(gòu)建和部署步驟。通過(guò)使用并理解組成當(dāng)前代碼庫(kù)的所有組件,此人可以和其他團(tuán)隊(duì)就組件如何一起工作以及如何部署進(jìn)行溝通。





回頁(yè)首


實(shí)現(xiàn)構(gòu)建流程

在很多 WebSphere Portal項(xiàng)目計(jì)劃中,“構(gòu)建”通常被標(biāo)識(shí)為項(xiàng)目計(jì)劃上的單條線或任務(wù)。在有些項(xiàng)目計(jì)劃中,甚至不將構(gòu)建定義為任務(wù),因?yàn)橛行╉?xiàng)目經(jīng)理將其視為開(kāi)發(fā)人員的日常工作的一部分。構(gòu)建是為門戶項(xiàng)目創(chuàng)建門戶構(gòu)件的過(guò)程。WebSphere Portal 最佳實(shí)踐認(rèn)為,構(gòu)建流程是門戶項(xiàng)目的發(fā)布周期中一項(xiàng)重要的活動(dòng)。

什么是構(gòu)建流程?

WebSpherePortal 既是應(yīng)用服務(wù)器,也是應(yīng)用程序框架。它允許開(kāi)發(fā)人員創(chuàng)建自己的代碼(針對(duì)此框架進(jìn)行了自定義)并將代碼部署到 WebSpherePortal,以創(chuàng)建一個(gè)新門戶網(wǎng)站。構(gòu)建流程會(huì)對(duì)代碼進(jìn)行編譯并生成可部署程序包(其中包含 WebSphere Portal 項(xiàng)目解決方案構(gòu)件)。

通過(guò)定義構(gòu)建流程,可確保每次團(tuán)隊(duì)生成可部署程序包時(shí),將在正確的級(jí)別進(jìn)行組合,流程能以完全相同的方式進(jìn)行。整個(gè)構(gòu)建流程應(yīng)該是可重復(fù)的和可跟蹤的。盡可能詳細(xì)地對(duì)構(gòu)建流程中的確切步驟順序進(jìn)行確定、記錄和自動(dòng)化。由于構(gòu)建流程在較大的門戶項(xiàng)目中會(huì)變得比較復(fù)雜,因此更有必要實(shí)現(xiàn)這樣的標(biāo)準(zhǔn)化。

明確定義的構(gòu)建流程可幫助消除開(kāi)發(fā)、集成、過(guò)渡和生產(chǎn)環(huán)境間潛在的差距。您可以使用構(gòu)建流程來(lái)將門戶構(gòu)件從一個(gè)環(huán)境遷移到另一個(gè)環(huán)境。它還可以消除與編譯、類路徑或?qū)傩韵嚓P(guān)的很多問(wèn)題;這些問(wèn)題可能會(huì)耗費(fèi)大量的項(xiàng)目時(shí)間和資金。

您可以定義兩種類型的構(gòu)建流程:

  1. 本地構(gòu)建:在這種情況中,開(kāi)發(fā)人員將使用 Rational Application Developer 或 Ant 或 Maven 腳本在自己的工作站上構(gòu)建代碼。然后開(kāi)發(fā)人員使用測(cè)試環(huán)境對(duì)代碼進(jìn)行測(cè)試。
  2. 構(gòu)建服務(wù)器構(gòu)建:構(gòu)建服務(wù)器從版本控制系統(tǒng)提取代碼,然后使用構(gòu)建管理人員創(chuàng)建的腳本進(jìn)行構(gòu)建。此流程還將相應(yīng)地構(gòu)建任何依賴性 JAR 文件和包。

創(chuàng)建構(gòu)建流程涉及到以下活動(dòng):

  • 定義此構(gòu)建流程的步驟
  • 定義作為此構(gòu)建流程的輸入的源代碼
  • 定義此構(gòu)建流程生成的構(gòu)件
  • 創(chuàng)建執(zhí)行此構(gòu)建流程的工具

構(gòu)建管理人員的任務(wù)是什么

在很多門戶項(xiàng)目中,開(kāi)發(fā)團(tuán)隊(duì)僅由代碼開(kāi)發(fā)人員組成。在接近開(kāi)發(fā)階段尾聲時(shí),開(kāi)發(fā)人員將創(chuàng)建 Ant 或 Maven 腳本來(lái)編譯代碼,并生成門戶構(gòu)件(如 Portlet 的 war 文件和主題和皮膚的 zip 文件)。

您可以指定團(tuán)隊(duì)中兩個(gè)人分別擔(dān)任構(gòu)建管理人員(或代碼維護(hù)人員)和部署管理人員(或發(fā)布管理人員)。對(duì)于大型門戶項(xiàng)目,構(gòu)建管理人員和部署管理人員都是開(kāi)發(fā)團(tuán)隊(duì)中非常重要的角色。根據(jù)項(xiàng)目的規(guī)模不同,可以讓一個(gè)人同時(shí)擔(dān)任這兩個(gè)角色。

構(gòu)建管理人員負(fù)責(zé)維護(hù)代碼,運(yùn)行構(gòu)建流程,還要確保每次使用完全相同的步驟生成門戶構(gòu)件。

構(gòu)建組件與打包

良好的構(gòu)建流程應(yīng)定義要生成哪些構(gòu)件。這些構(gòu)件可以為組件(如 war 文件或 zip 文件),也可以為 wps.ear包中的文件。為了確定一個(gè)構(gòu)建流程來(lái)生成這些不同類型的構(gòu)件,需要對(duì)您的門戶解決方案的設(shè)計(jì)進(jìn)行仔細(xì)的研究。構(gòu)建 Portlet的方式可能會(huì)與構(gòu)建門戶可能需要的其他構(gòu)件的方式不同。請(qǐng)參見(jiàn)“下載”部分,其中提供了使用 Rational ApplicationDeveloper 項(xiàng)目結(jié)構(gòu)來(lái)構(gòu)建 Portlet 的 Maven 和 Ant 示例腳本。

和其他團(tuán)隊(duì)協(xié)作

開(kāi)發(fā)團(tuán)隊(duì)完成了其代碼開(kāi)發(fā)工作后,構(gòu)建管理人員將與開(kāi)發(fā)團(tuán)隊(duì)和部署團(tuán)隊(duì)密切合作,以生成門戶構(gòu)件并將其部署到門戶環(huán)境中。構(gòu)建管理人員將運(yùn)行構(gòu)建流程來(lái)生成門戶構(gòu)件,部署管理人員則將這些構(gòu)件部署到開(kāi)發(fā)、集成、過(guò)渡和生產(chǎn)環(huán)境中。

當(dāng)開(kāi)發(fā)團(tuán)隊(duì)希望將其新代碼部署到開(kāi)發(fā)環(huán)境中時(shí),會(huì)向構(gòu)建管理人員發(fā)送構(gòu)建請(qǐng)求。此構(gòu)建請(qǐng)求指定以下內(nèi)容:

  1. 要構(gòu)建 SCM 中的哪個(gè)項(xiàng)目
  2. 這些項(xiàng)目的版本
  3. 目標(biāo)環(huán)境
  4. 構(gòu)建應(yīng)完成的時(shí)間限制

如圖 2 中所示:

  1. 構(gòu)建管理人員使用構(gòu)建工具生成門戶構(gòu)件
  2. 構(gòu)件管理人員向開(kāi)發(fā)團(tuán)隊(duì)通知構(gòu)建流程的狀態(tài)
  3. 構(gòu)建管理人員向部署管理人員發(fā)送部署請(qǐng)求,指示門戶構(gòu)件的可用性,并請(qǐng)求將其部署到指定的目標(biāo)環(huán)境中。
  4. 當(dāng)部署完成時(shí),部署管理人員通知構(gòu)建管理人員。


圖 2:與項(xiàng)目團(tuán)隊(duì)協(xié)作


隨著開(kāi)發(fā)工作逐漸接近門戶測(cè)試階段,構(gòu)建管理人員可以創(chuàng)建每日構(gòu)建并將構(gòu)件部署到開(kāi)發(fā)人員的開(kāi)發(fā)環(huán)境中。構(gòu)建管理人員應(yīng)該每周(或更頻繁)對(duì)更為成熟的標(biāo)記代碼進(jìn)行相同的工作,將其部署到測(cè)試人員的集成環(huán)境中。

選取構(gòu)建工具

由于存在很多選擇,選擇構(gòu)建工具也可能成為一個(gè)比較麻煩的任務(wù)??梢赃x擇各種開(kāi)放源代碼工具,如 Ant、Maven 或構(gòu)建服務(wù)器的 CruiseControl。這些都是 Apache的開(kāi)放源代碼項(xiàng)目。為了給環(huán)境選取正確的工具,將需要進(jìn)行一定的研究工作;在很多情況下,這些工具可以協(xié)同工作,從而提供額外的功能。

以下是 Julien Dubois 在“Master and Commander”一文中所做的一個(gè)簡(jiǎn)單比較。


AntMaven

安裝

非常容易

非常容易(與 Ant 很相像)

啟動(dòng)新項(xiàng)目所需的時(shí)間

5 分鐘

15 分鐘

添加新功能所需的時(shí)間

添加一個(gè)新的目標(biāo)需要 10 分鐘

使用新目標(biāo)需要 2 分鐘

新開(kāi)發(fā)人員學(xué)習(xí)所需的時(shí)間

30 分鐘。很容易理解,具有非常好的工具支持。

2 小時(shí)。開(kāi)始時(shí)可能存在混淆不清的地方。

標(biāo)準(zhǔn)布局

否(這樣很好;您可以隨意進(jìn)行操作)。

是(所有項(xiàng)目的看起來(lái)很一致)。

多項(xiàng)目支持

是,但必須自己設(shè)置主控構(gòu)建文件。

是,通過(guò)使用 Maven Reactor

文檔生成

尚沒(méi)有標(biāo)準(zhǔn)方法,但有大量相關(guān)工具可用。

IDE 集成

尚很簡(jiǎn)單

Ant 可為您提供靈活性,而 Maven 則可提供更多的結(jié)構(gòu)和良好的依賴關(guān)系管理??梢栽?Ant 內(nèi)使用部分 Maven 功能,反之亦然。

可以將 Ant 或 Maven 與 CruiseControl 結(jié)合使用,從而實(shí)現(xiàn)構(gòu)建過(guò)程的自動(dòng)化。如果有 Ant,則可以從 Maven 調(diào)用 Ant??赏ㄟ^(guò)一些任務(wù)從 Ant 使用 Maven 功能,反之亦然。

CruiseControl 允許對(duì)構(gòu)建進(jìn)行計(jì)劃安排——可以在夜間或任何特定時(shí)間進(jìn)行。因此可以節(jié)約一定時(shí)間,特別在構(gòu)建需求更頻繁的項(xiàng)目初始階段更是如此。這是一個(gè)用于持續(xù)構(gòu)建流程的框架。通過(guò)使用 CruiseControl,可以進(jìn)行以下工作:

  1. 從版本控制系統(tǒng)提取源代碼
  2. 使用 Maven 或 Ant 將源代碼構(gòu)建為門戶構(gòu)件,如 war、zip 和其他文件
  3. 將這些文件放入部署區(qū)域
  4. 部署構(gòu)件
  5. 將文件保存回 SCM,并為其指定一個(gè)新版本標(biāo)簽或標(biāo)記
  6. 運(yùn)行構(gòu)件驗(yàn)證測(cè)試
  7. 發(fā)送電子郵件通知
  8. 通過(guò)使用 Maven,您可以生成報(bào)告并發(fā)送有關(guān)構(gòu)建狀態(tài)的電子郵件。

urbancode.com 的 AntHill 是使用 Ant 的另一個(gè)構(gòu)建工具(需要繳納少量許可費(fèi)用),非常易于安裝和使用。

構(gòu)建過(guò)程中要考慮的構(gòu)件

以下是在創(chuàng)建構(gòu)建和部署腳本時(shí)要考慮的一些構(gòu)件。

  1. Portlet
  2. 皮膚
  3. 主題
  4. 屬性文件
  5. NLS 資源包
  6. <PortalServer>/shared/app/config/services 下的配置文件
  7. 共享庫(kù)
  8. XMLAccess 腳本
  9. Web 文件

版本控制

為了提供可跟蹤性和故障轉(zhuǎn)移恢復(fù),在將門戶構(gòu)件放入部署區(qū)域后,還應(yīng)該將其作為 新版本保存到 SCM 中。您可以從 SCM 內(nèi)跟蹤這些門戶構(gòu)件的構(gòu)建歷史。

您要進(jìn)行的最重要決策之一就是,您的團(tuán)隊(duì)將使用哪個(gè)源代碼管理系統(tǒng)。有很多系統(tǒng)可用,您的組織或公司標(biāo)準(zhǔn)可能會(huì)規(guī)定使用哪個(gè)系統(tǒng)。

有兩種完全不同的源代碼管理系統(tǒng)。

  • 簽入/簽出,如 Visual Source Safe、CMVS 或 Rational ClearCase。
  • 持續(xù)流;如 Concurrent Versioning System (CVS) 使用合并類型的系統(tǒng)來(lái)提交新代碼,而不采用簽入/簽出方式。開(kāi)發(fā)人員使用以下流程:
    • 復(fù)制——獲取代碼最新副本的本地版本。
    • 更改——進(jìn)行必要的更改。
    • 合并——提交更改并將其與現(xiàn)有代碼合并。

CVS 或 Concurrent Versioning System是一個(gè)可行的選擇,特別在沒(méi)有其他 SCM 系統(tǒng)供團(tuán)隊(duì)使用時(shí)更是如此。CVS是免費(fèi)提供的開(kāi)放源代碼系統(tǒng),在開(kāi)發(fā)領(lǐng)域得到了廣泛的接受和使用。管理人員可能遇到的一個(gè)潛在缺陷是 CVS內(nèi)缺乏文件鎖定功能。根據(jù)您的觀點(diǎn)或管理風(fēng)格不同,既可以將其視為優(yōu)點(diǎn),也可以將其視為缺陷。對(duì)于能有效溝通、組織良好的團(tuán)隊(duì),缺少鎖定不是問(wèn)題。

另一個(gè)可能的問(wèn)題是,由于 CVS 并未由某個(gè)公司在市場(chǎng)上正式銷售,因此缺少正式的支持服務(wù)。這可以作為不選擇此工具的一個(gè)有效理由;不過(guò),由于開(kāi)放源代碼社區(qū)廣泛使用此工具,因此能為您遇到的很多問(wèn)題提供強(qiáng)大的技術(shù)支持。

按照開(kāi)發(fā)社區(qū)推薦的方式使用 CVS 還可幫助緩解各種問(wèn)題。使用 CVS 的優(yōu)勢(shì)之一在于其提供了一些免費(fèi)的外接程序工具。例如,CVSWeb 是基于Web 的接口,允許非 CVS 用戶直接查看存儲(chǔ)庫(kù),而無(wú)需使用客戶機(jī)軟件或開(kāi)發(fā)環(huán)境的插件(將在下面進(jìn)行說(shuō)明)。

下面的圖 5 顯示了如何將 CVS 集成到您的 Eclipse 或 RAD 開(kāi)發(fā)環(huán)境中。


圖 5:用于 Rational Application Developer 的 CVS 插件


隨Rational Application 安裝了一個(gè)功能齊全的 CVS 插件??梢栽?RAD 的 Team透視圖中時(shí)設(shè)置此插件,這將允許開(kāi)發(fā)人員在進(jìn)行開(kāi)發(fā)時(shí)方便地查看、提取和合并代碼段。這個(gè)功能對(duì)于定義良好且易于使用的構(gòu)建和部署流程非常重要。當(dāng)向開(kāi)發(fā)人員提供了簡(jiǎn)單的 SCM 集成流程時(shí),就會(huì)減少他們嘗試走捷徑的可能性,從而避免打亂團(tuán)隊(duì)的流程和控制。

構(gòu)建失敗時(shí)

并不能保證每個(gè)構(gòu)建都會(huì)完全成功。構(gòu)建工具執(zhí)行后,構(gòu)建管理人員將查看構(gòu)建工具日志文件,以確定構(gòu)建過(guò)程是否完全成功。如果構(gòu)建失敗,則要嘗試確定失敗的原因。大部分構(gòu)建工具允許將構(gòu)建報(bào)告以電子郵件的方式發(fā)送出去。

如果失敗是由于源代碼導(dǎo)致的,構(gòu)建管理人員可以向開(kāi)發(fā)團(tuán)隊(duì)或負(fù)責(zé)修復(fù)構(gòu)建的人員發(fā)送請(qǐng)求。開(kāi)發(fā)團(tuán)隊(duì)修復(fù)了代碼后,構(gòu)建管理人員將重新運(yùn)行構(gòu)建流程。將重復(fù)此過(guò)程,直到構(gòu)建完全成功為止。

應(yīng)用緊急修復(fù)程序

在某些情況下,可能需要向構(gòu)建構(gòu)件應(yīng)用緊急修補(bǔ)程序,以便能繼續(xù)進(jìn)行測(cè)試或保證按時(shí)投入生產(chǎn)環(huán)境。將緊急修復(fù)流程作為構(gòu)建流程文檔的一部分清楚地進(jìn)行記錄。

構(gòu)建流程總結(jié)

總的說(shuō)來(lái),構(gòu)建流程是門戶項(xiàng)目發(fā)布周期中的一個(gè)重要活動(dòng)。構(gòu)建管理人員應(yīng)是開(kāi)發(fā)團(tuán)隊(duì)中的成員。應(yīng)對(duì)構(gòu)建流程進(jìn)行定義,并應(yīng)選擇(或創(chuàng)建)構(gòu)建工具來(lái)實(shí)現(xiàn)流程的自動(dòng)化。

如果團(tuán)隊(duì)遵循所定義的構(gòu)建流程,并使用構(gòu)建工具進(jìn)行標(biāo)準(zhǔn)化,則可以避免很多來(lái)自構(gòu)建流程的意外問(wèn)題。在構(gòu)建流程上花費(fèi)的時(shí)間和資金將通過(guò)消除測(cè)試期間的其他意外問(wèn)題而得到回報(bào)。





回頁(yè)首


部署門戶

在很大程度上,門戶是一個(gè)復(fù)雜的 J2EE 應(yīng)用程序,其中可以包括 Web 模塊、ear 文件、jar、屬性文件和其他資產(chǎn)。每個(gè) Portlet都是一個(gè)實(shí)現(xiàn)特定功能的獨(dú)立 Web 應(yīng)用程序,可以作為獨(dú)立的單元進(jìn)行操作。通過(guò)進(jìn)行恰當(dāng)?shù)脑O(shè)計(jì),可以將這些 Portlet 組合為組合應(yīng)用程序。

在很多情況下,由于 WebSphere Portal 提供了額外的框架,而使得門戶環(huán)境甚至?xí)阮愃频?J2EE 環(huán)境還要復(fù)雜。您需要在門戶數(shù)據(jù)庫(kù)中注冊(cè)某些特定于門戶的組件,以便能夠?qū)ζ溥M(jìn)行管理,并向環(huán)境提供。

WPS.ear 是核心 WebSphere Portal 包,作為 Web 容器中的獨(dú)立 Web 應(yīng)用程序運(yùn)行。其中包含門戶的大部分基本功能,包括一些重要的集成功能,如菜單和外觀。

部署 Portlet

可以采用多種方式安裝 Portlet,如使用門戶管理界面或使用 XMLAccess。由于最終的目標(biāo)是實(shí)現(xiàn)部署門戶資源和組件的流程的自動(dòng)化,因此需要采用腳本對(duì)其進(jìn)行部署。您可以對(duì) Portlet 進(jìn)行分析,并基于Portlet 內(nèi)的 portlet.xml 文件生成 XMLAccess 部署腳本。

請(qǐng)參見(jiàn) Reference: Sample XML configuration files section of the WebSphere Portal InfoCenter 中提供的大量示例腳本。您可以選擇并修改適合您的部署需求的腳本。

然后,可以使用經(jīng)過(guò)修改的腳本來(lái)安裝 .war 文件。不過(guò),您還需要使用某個(gè)自動(dòng)化方案來(lái)構(gòu)建和部署此腳本。為了自動(dòng)生成 Portlet,您可以使用清單 1 中的腳本,同時(shí)通過(guò)自定義 Ant 任務(wù)檢查 portlet.xml 并使用一些模板屬性對(duì)其進(jìn)行更新。


清單 1. 用于構(gòu)建 Portlet 的示例 Ant 腳本

				
<?xml version="1.0" encoding="UTF-8"?>
<project name="xMethodsTempPortlet" default="main" basedir=".">
<project name="xMethodsTempPortlet" default="main" basedir=".">
<property name="name" value="${ant.project.name}" />
<property name="deployDir" location="dist" />
<property name="dist.dir" location="${deployDir}" />
<property name="dist.download.dir" location="${dist.dir}/download" />
<target name="main">
<echo message="Starting build process...." />
<antcall target="compile" />
<antcall target="archive" />
</target>
<target name="compile">
<property name="build. compiler" value="modern" />
<javac srcdir="../Java Source" >
<classpath >
<pathelement location="../../PortalMain/BaseLibraries/lib/j2ee.jar" />
<pathelement location="../../PortalMain/BaseLibraries/lib/websphere.jar" />
</classpath>
</javac>
</target>
<target name="archive" depends="compile">
<tstamp><format property="build.time" pattern="MM/dd/yyyy hh:mm aa" /></tstamp>
<filter filtersfile="template.properties"/>
<filter token="buildinfo" value="(build date: ${build.time})"/>
<copy file="portlet_template.xml" toFile="..\Web Content\WEB-INF\portlet.xml"
overwrite="yes" filtering="true" />
<mkdir dir="${dist.download.dir}" />
<zip zipfile="${dist.download.dir}/${name}-${version}.war" basedir="..\Web Content"/>
</target>
</project>

可以通過(guò)此示例來(lái)將 Portlet 的名稱替換為每個(gè)構(gòu)建的版本號(hào)。在測(cè)試期間,開(kāi)發(fā)人員和測(cè)試人員可以使用這個(gè)強(qiáng)大的方法來(lái)確定其正在使用的版本。此示例包含構(gòu)建的時(shí)間戳,以便確定其創(chuàng)建時(shí)間。


清單 2. 用于使用版本號(hào)替換 Portlet 名稱的示例模板
				
Template.properties

version = 1.0.0.29

此模板屬性文件相當(dāng)簡(jiǎn)單,只是一個(gè)希望在篩選操作期間替換的屬性列表。還可以使用 Ant 腳本安裝 Portlet。


清單 3. Ant 示例部署腳本
				
<?xml version="1.0" encoding="UTF-8"?>
<project name="xMethodsTemp Portlet" default="main" basedir=".">
<property name="deployDir" location="dist" /> <!-- passed in by Anthill -->
<property name="dist.dir" location="${deployDir}" />
<property name="dist.download.dir" location="${dist.dir}/download" />
<target name="main">
<antcall target="deploy" />
</target>
<target name="deploy">
<echo message="Starting deploy to test..."/>
<java classname="XmlAccess">
<arg value="C:\anthill\work\xMethodsTempPortlet\build\xmlAccessUpdatePortlet.xml"/>
<arg value="wpsadmin:wpsadmin"/>
<arg value="wpsdev/wps/config"/>
<arg value="2"/>
<classpath >
<pathelement location="C:\WebSphere\PortalServer\bin\XmlAccess.jar" />
</classpath>
</java>
<echo message="deploy complete!"/>
</target>
</project>
<!--arg value="C:\anthill\work\xMethodsTempPortlet\build\xmlAccessUpdatePortlet.xml"/-->

此示例調(diào)用 XmlAccess 類,并同時(shí)傳入所需的參數(shù)。用于更新 Portlet 的 xml 文件應(yīng)隨 Portlet 一起提供,可以作為版本控制的一部分進(jìn)行保存。

部署主題和皮膚

可以將 WPS.war 文件作為 .ear 文件部署到服務(wù)器。通過(guò)這樣的方式部署主題和皮膚比直接將其復(fù)制到服務(wù)器更為安全。

門戶主題是基于 JSP 和 CSS 文件結(jié)構(gòu)的文件系統(tǒng)。創(chuàng)建門戶主題首先要理解其文件系統(tǒng)。WPS.ear 是 WebSphere Application Server 下的一個(gè)企業(yè)應(yīng)用程序,因此您可以在與以下所示類似的服務(wù)器文件系統(tǒng)中找到該文件:

[was-root]/installedApps/wps.ear

在此文件系統(tǒng)中,可以找到 themes 和 skins 文件夾,這兩個(gè)文件夾下均包含有 markups 文件夾。

之所以作為 EAR 部署,主要是為了跨系統(tǒng)實(shí)現(xiàn)源代碼控制、可重復(fù)性和一致性。建立了系統(tǒng)后,可以更方便地在部署期間執(zhí)行此步驟。

可以采用若干其他方法部署 EJB:

  • 通過(guò)應(yīng)用服務(wù)器管理控制臺(tái)。您可以安裝、修改或卸載企業(yè)應(yīng)用程序存檔(Enterprise Application Archive,EAR)文件。
  • 通過(guò)使用 wsadmin 接口的腳本

有關(guān)安裝 ear 文件的基本腳本方法,可以使用以下命令:

./wsadmin.sh -user USER -password PASSWORD -c "\$AdminApp install/usr/WebSphere/AppServer/installableApps/wps.ear {-update -appnamewps.ear}"

此命令將安裝 wps.ear 文件。

您將在下面的部分中了解關(guān)于此方法的更多信息。

處理靜態(tài)文件

按照傳統(tǒng)的做法,希望提高性能的網(wǎng)站會(huì)將靜態(tài)文件移動(dòng)到 Web服務(wù)器層,以減少應(yīng)用服務(wù)器上的負(fù)載。雖然這個(gè)做法不錯(cuò),但對(duì)于嘗試以這種方式構(gòu)建應(yīng)用程序的開(kāi)發(fā)人員卻有些困難。Web 服務(wù)器插件包含內(nèi)置 ESI處理器,該處理器將緩存整個(gè)頁(yè)以及必要的片段,具有較高的緩存命中率。可以將靜態(tài)文件和 Portlet 打包到一起,同時(shí)仍然能夠獲得將其移動(dòng)到HTTP 服務(wù)器時(shí)的性能優(yōu)勢(shì)。ESI 處理器實(shí)現(xiàn)的緩存是內(nèi)存內(nèi)緩存??梢酝ㄟ^(guò) WebSphere Web 服務(wù)器插件配置文件plugin-cfg.xml 對(duì)此緩存處理器進(jìn)行配置。

<?xml version-"1.0"?> <Config> 
<Property Name="esiEnable" Value="true"/>
<Property Name="esiMaxCacheSize" Value="1024"/>
<Property Name="esiInvalidationMonitor" Value="false"/>

在集群環(huán)境中部署 Portlet

對(duì)于最初發(fā)布的 WebSphere Portal V5,將組件部署到集群環(huán)境需要執(zhí)行若干步驟。由于 XMLAccess更新門戶數(shù)據(jù)庫(kù)的方式,如果僅在多個(gè)可能位置中的一個(gè)位置更新代碼,集群環(huán)境中可能會(huì)出現(xiàn)沖突問(wèn)題。很多生產(chǎn)環(huán)境都優(yōu)先采用集群方法來(lái)提供更高的性能和服務(wù)器出現(xiàn)故障時(shí)的故障轉(zhuǎn)移功能。WebSphere Portal的后續(xù)版本和修復(fù)程序包已修復(fù)了其中的一些問(wèn)題。在本文中,我們假定部署流中出現(xiàn)了最糟糕的情況,以便能涵蓋所有需求。

使用 XMLAccess 安裝或更新 WAR 文件。

  1. 名為 XMLAccess 的門戶部署工具是基于 Java 的工具,將使用 XML 對(duì) WebSphere Portal 文件系統(tǒng)和數(shù)據(jù)庫(kù)進(jìn)行必要的更改。它可支持門戶管理和維護(hù)所需的多種任務(wù)。

    您需要在所有標(biāo)記中將 active 屬性設(shè)置為 false,以防止在同步節(jié)點(diǎn)并啟動(dòng)應(yīng)用程序前出現(xiàn)嘗試操作所導(dǎo)致的警告。在包含 WAR 文件的路徑的 URL 標(biāo)記中指定要安裝的 WAR 文件的路徑。

  2. 等待集群中的節(jié)點(diǎn)同步 Portlet。

    部署了單個(gè) Portlet 或一組 Portlet 后,會(huì)將其標(biāo)記為非活動(dòng)狀態(tài),直到節(jié)點(diǎn)同步了集群內(nèi)的所有階段,可以激活所有 Portlet 為止。

    可以查看不同服務(wù)器上的節(jié)點(diǎn)代理的 system.out 日志,以查看同步過(guò)程的執(zhí)行情況。這個(gè)過(guò)程不會(huì)持續(xù)太長(zhǎng)時(shí)間,但它是部署流程中一個(gè)必需的步驟,大型的部署活動(dòng)可能會(huì)導(dǎo)致環(huán)境較長(zhǎng)時(shí)間停機(jī)。

  3. 現(xiàn)在使用 XMLAccess 激活 Portlet。
  4. 修改部署腳本,以激活所有 Portlet,然后再次運(yùn)行。需要執(zhí)行以下操作:
  5. 修改腳本,以刪除所有 Portlet 的 URL。
  6. 在所有 Web 應(yīng)用程序上將 activate 設(shè)置為 true。

運(yùn)行經(jīng)過(guò)修改的腳本時(shí)(完成了初始部署和同步后),門戶將激活系統(tǒng)上的所有 Portlet 并進(jìn)行必要的頁(yè)面填充操作。

在集群環(huán)境中部署主題和皮膚

在集群環(huán)境中,必須從 Deployment Manager 導(dǎo)出門戶 EAR 文件,使用新主題和皮膚目錄更新 EAR文件,然后將企業(yè)應(yīng)用程序文件重新導(dǎo)入到 Deployment Manager 計(jì)算單元。如果您使用的是獨(dú)立門戶服務(wù)器,則請(qǐng)使用應(yīng)用服務(wù)器代替Deployment Manager。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) InfoCenter under Deploying customized themes and skins。

使用共享庫(kù)

可以使用共享庫(kù)在門戶內(nèi)不同組件或 Portlet 間共享資源。這些共享庫(kù)通常是在應(yīng)用程序設(shè)計(jì)階段確定的(在此階段確定需要跨多個(gè) Portlet 或組件共享哪些組件)。使用共享庫(kù)時(shí),您需要在應(yīng)用服務(wù)器內(nèi)設(shè)置變量,以允許在必要時(shí)加載這些共享庫(kù)。

要部署共享庫(kù),請(qǐng)執(zhí)行下列操作:

  1. 將庫(kù)文件復(fù)制到正確的 WebSphere 目錄
  2. 使用 wsadmin 在 WebSphere 內(nèi)安裝庫(kù)。

或者,將 .jar 文件直接放入 /PortalServer/shared/app 目錄。如果要為這些文件使用獨(dú)立目錄,則請(qǐng)使用管理控制臺(tái)或 wsadmin 配置命令在服務(wù)器中創(chuàng)建共享庫(kù),例如:

$AdminConfig create Library $server {{name myLibrary} {classPath c:/WebSphere/PortalServer/shared/app/myLibraryClasspath}}

計(jì)劃部署和系統(tǒng)停機(jī)

縮短站點(diǎn)的停機(jī)時(shí)間是一個(gè)常見(jiàn)問(wèn)題;不過(guò),計(jì)劃的維護(hù)停機(jī)時(shí)間卻是一件必要的“壞事”。管理人員理解了這一點(diǎn)后,一切就會(huì)變得更加簡(jiǎn)單了。站點(diǎn)可能沒(méi)有計(jì)劃停機(jī);不過(guò),可能會(huì)因此招致大量硬件投資,因?yàn)槟枰獪?zhǔn)備兩套基礎(chǔ)設(shè)施,以便在升級(jí)一套系統(tǒng)的同時(shí)另一套系統(tǒng)能繼續(xù)保持所需的用戶負(fù)載處理水平。

如果您的組織不準(zhǔn)備承擔(dān)高標(biāo)準(zhǔn)基礎(chǔ)設(shè)施的相關(guān)成本,則現(xiàn)在務(wù)必與管理人員和最終用戶交流或討論對(duì)計(jì)劃停機(jī)的需求,使其在投入使用后成為一項(xiàng)日常事務(wù)。

如果流程設(shè)計(jì)良好,且團(tuán)隊(duì)工作同步,則經(jīng)??梢詫⑼C(jī)時(shí)間降到最低水平??赡軙?huì)因?yàn)槿舾稍蛐枰C(jī):

  • 升級(jí)基礎(chǔ)設(shè)施組件和操作系統(tǒng)
  • 需要部署新構(gòu)建版本

在有些情況下,會(huì)在維護(hù)期間同時(shí)進(jìn)行上述兩項(xiàng)工作。如果您有多個(gè)發(fā)布環(huán)境,就可以在預(yù)生產(chǎn)環(huán)境中進(jìn)行維護(hù)工作,以盡可能減少生產(chǎn)部署期間的風(fēng)險(xiǎn)。





回頁(yè)首


管理發(fā)布環(huán)境

發(fā)布會(huì)涉及到能在門戶中部署和配置的各種各樣的構(gòu)件。發(fā)布版本可以是配置更改、Portlet 更新、用于安裝新門戶的完整程序包和任何更改組合。團(tuán)隊(duì)間的溝通和跟蹤對(duì)成功維護(hù)組織中的每個(gè)環(huán)境非常關(guān)鍵。

發(fā)布版本具有編號(hào),通常的形式為主版本、次版本、修復(fù)程序編號(hào)并加上點(diǎn)號(hào),如2.1.0.1。這些數(shù)字可能表示主版本、次版本和版本內(nèi)不同類型的修復(fù)程序。您將需要對(duì)這些發(fā)布版本進(jìn)行記錄;包括版本中包含的內(nèi)容以及部署說(shuō)明。您需要跟蹤發(fā)布版本在以下每個(gè)環(huán)境中的情況:開(kāi)發(fā)、集成、操作接受度測(cè)試、用戶接受度測(cè)試、過(guò)渡和生產(chǎn)環(huán)境。

在發(fā)布計(jì)劃中,請(qǐng)確保包含維護(hù)窗口、備份、部署時(shí)間、擱置時(shí)間和測(cè)試的相關(guān)內(nèi)容。請(qǐng)自動(dòng)化安裝,以盡可能減少人為錯(cuò)誤;請(qǐng)包含數(shù)據(jù)庫(kù)更新、訪問(wèn)控制、皮膚、主題和頁(yè)面更新。





回頁(yè)首


處理失敗部署和回滾

經(jīng)過(guò)全面測(cè)試的備份和恢復(fù)過(guò)程對(duì)任何生產(chǎn)環(huán)境都十分重要。WebSphere Portal 也不例外。請(qǐng)開(kāi)發(fā)并測(cè)試(在測(cè)試環(huán)境中進(jìn)行)完整的災(zāi)難恢復(fù)策略和方法。經(jīng)過(guò)驗(yàn)證后,應(yīng)將這些過(guò)程實(shí)現(xiàn)到 WebSphere Portal 生產(chǎn)環(huán)境中。

雖然這些不是用于備份和恢復(fù)的詳細(xì)過(guò)程,但提供了進(jìn)行 WebSphere Portal 備份和恢復(fù)的一種方法,可以與公司現(xiàn)有的災(zāi)難恢復(fù)過(guò)程一起實(shí)現(xiàn)。

從失敗的部署回滾,或者新代碼存在問(wèn)題,都會(huì)使得使用者面臨一定的困難。利用一些 WebSphere Portal功能可簡(jiǎn)化出錯(cuò)時(shí)應(yīng)進(jìn)行的工作。由于遵循的是以前發(fā)布版本的已定義構(gòu)建和部署流程,最簡(jiǎn)單的“回滾”方法就是重新部署上一個(gè)發(fā)布版本。這可能并不總是最簡(jiǎn)潔的方法,但對(duì)于大部分情況,這將確保在門戶中重新安裝最新的有效代碼包。

目前,確保全面回滾能力的唯一方法是在部署前進(jìn)行完整的文件系統(tǒng)和數(shù)據(jù)庫(kù)備份。這將確保文件系統(tǒng)的正確性和恢復(fù)數(shù)據(jù)庫(kù)備份中任何新的配置更改。還可以在 XML 腳本中使用“事務(wù)性”來(lái)確保腳本以“All or Nothing”模式運(yùn)行。





回頁(yè)首


結(jié)束語(yǔ)

本文提供了有關(guān)為門戶項(xiàng)目創(chuàng)建構(gòu)建和部署流程的觀點(diǎn)和建議步驟。本文的主要目的在于讓您認(rèn)識(shí)到,對(duì)此流程進(jìn)行考慮是非常值得的。我們刻意在較高的抽象層次進(jìn)行討論,讓您自己確定適合自己的環(huán)境的相關(guān)細(xì)節(jié)。我們專門提供了一些示例和腳本,以幫助您盡快上手。

請(qǐng)牢記所討論的這一過(guò)程中使用的一些指導(dǎo)原則。保持簡(jiǎn)單,并在項(xiàng)目中盡早開(kāi)始相關(guān)工作。即使不會(huì)立即構(gòu)建任何東西,也請(qǐng)啟動(dòng)腳本并持續(xù)運(yùn)行,直到其正常工作為止。腳本必須隨著項(xiàng)目的進(jìn)行而持續(xù)加以改進(jìn),只有這樣,才不會(huì)在項(xiàng)目結(jié)束時(shí)發(fā)現(xiàn)有一大堆讓人生畏的創(chuàng)建任務(wù)需要完成。如果沒(méi)有配備構(gòu)建服務(wù)器,可以進(jìn)行簡(jiǎn)單的腳本測(cè)試,提取必要的代碼組件來(lái)運(yùn)行腳本。如果腳本不能正常運(yùn)行,則可能相對(duì)路徑存在問(wèn)題,需要進(jìn)行修復(fù)。最后,不要嘗試設(shè)計(jì)一個(gè)執(zhí)行您認(rèn)為需要完成的所有任務(wù)的流程。讓系統(tǒng)隨著您的需求逐漸發(fā)展,而不要嘗試立即形成整個(gè)流程。

本文并沒(méi)有詳細(xì)討論整個(gè)構(gòu)建、部署和遷移流程(這對(duì)項(xiàng)目的成功非常必要)。例如,我們并未討論如何在門戶內(nèi)構(gòu)建和傳輸頁(yè)面和 Portlet布局。此步驟之所以重要,是因?yàn)槟⒉灰欢ㄏM芾韱T在不進(jìn)行更為正式的 QA和性能測(cè)試流程來(lái)確定任何更改的影響的情況下在生產(chǎn)環(huán)境中更改布局。具有針對(duì)所有組件的發(fā)布策略可讓您快速?gòu)沫h(huán)境內(nèi)可能出現(xiàn)的異常情況中恢復(fù)。






回頁(yè)首


下載

描述名字大小下載方法
Portal build samples portalbuild-samples.zip 36KB  FTP
|
HTTP
關(guān)于下載方法的信息
Get Adobe® Reader®




回頁(yè)首


參考資料

學(xué)習(xí)

獲得產(chǎn)品和技術(shù)




回頁(yè)首


作者簡(jiǎn)介

Anthony (Joey) Bernal 是 IBM Software Services for Lotus (ISSL) 的高級(jí) IT 咨詢專家。從最初的 1.1 版開(kāi)始他就從事 WebSphere Portal 方面的工作,在設(shè)計(jì)和開(kāi)發(fā)門戶應(yīng)用程序方面有著豐富的經(jīng)驗(yàn),他已經(jīng)用 IBM WebSphere Portal 實(shí)施了許多項(xiàng)目。Joey 還是 WebSphere Portal 及其相關(guān)技術(shù)方面的一位杰出作家、演說(shuō)家和講師。他是 Programming Portlets 一書(shū)的合著者。


Varad Ramamoorthy 是 IBM Software Services for Lotus 的 IT 咨詢專家。從最初的 1.1 版起就開(kāi)始從事 WebSphere Portal 方面的工作,一直在用他自己的專業(yè)知識(shí)來(lái)幫助解決客戶文件。他發(fā)表了很多有關(guān) WebSphere Portal 及相關(guān)技術(shù)的文章。


Yixing Gong 是 IBM Global Business Services 的門戶、內(nèi)容和電子商務(wù)方面的 IBM 認(rèn)證高級(jí) IT 專家。他已在 IBM 工作了 11 年,主要從事 WebSphere Application Server 上的 Web 應(yīng)用程序以及 WebSphere Portal 上的門戶站點(diǎn)的體系結(jié)構(gòu)設(shè)計(jì)和開(kāi)發(fā)工作。從推出 WebSphere Portal 的最初版本開(kāi)始,他就開(kāi)始向美國(guó)全國(guó)的客戶提供有關(guān) WebSphere Portal 的咨詢服務(wù)。


John Barron 是 IBM Global Business Services 的一名高級(jí) IT 專家。他擁有 22 年 IT 行業(yè)系統(tǒng)和軟件工程方面的經(jīng)驗(yàn)。從最初的 1.1 版開(kāi)始,他就在使用 WebSphere Portal,在配置、集成和維護(hù)門戶應(yīng)用程序方面具有廣泛背景。


Julia Weatherby 是 IBM Software Services for WebSphere 的一名 IT 專家。她有 9 年使用 IBM 軟件系列中的各種產(chǎn)品的經(jīng)驗(yàn),包括實(shí)現(xiàn) WebSphere Application Server、WebSphere Portal 以及為 IBM 的客戶實(shí)現(xiàn)相關(guān)技術(shù)等。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
DevOps詳解
什么是 CI/CD?
應(yīng)用安全與微軟SDL
深入 DataOps:現(xiàn)代數(shù)據(jù)管道的軟肋
WebGIS開(kāi)發(fā)流程與基礎(chǔ)環(huán)境搭建
架構(gòu)師之路:一個(gè)架構(gòu)師需要掌握的知識(shí)技能
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服