Tomcat5中的項目部署
來源:互聯網
上載者:User
Tomcat5中的部署方式:
1 應用程式部署器(Deployer)
程式員朋友不要以為這是什麼全新的東西,其實以前的版本就已經有了,只不過在Tomcat4中沒有提出這個概念,且它的功能被分散在各個組件中,給人的感覺是比較支離破碎的。於是乎,在Tomcat5中對其進行了封裝和增強,提出了Deployer這個邏輯概念,用於集中表示應用程式部署和發布功能。Tomcat5對其的主要改進就是進行了一些最佳化,增強了動態部署的功能,減少了重啟Tomcat的次數,增強了伺服器的健壯性和可靠性。
Deployer提供的主要功能就是靜態(在tomcat啟動之前)或者動態(在Tomcat運行以後)進行Web應用程式的部署和刪除,在某些情況下Deployer需要和Manager管理工具聯合使用。
1.1 Context descriptors
這個也不是新東西了,Tomcat4中的Manager和Admin管理工具其實就是利用它來部署的。在Tomcat5中提出了Context descriptor這個概念,且為其配置了一個專有目錄,而不像Tomcat4那樣大雜燴一般地放置在$appBase目錄下。既然了有了名分,當然要為其單獨配置一個目錄才能顯其身份:)
Context descriptor是一個只包含Context元素的xml格式的部署檔案,其中Context元素與server.xml中的Context元素配置相同。對於一個給定的主機,Context descriptor放置在$CATALINA_HOME/conf/[enginename]/[hostname]/目錄下面。Tomcat5預設安裝時,在$CATALINA_HOME\conf\Catalina\localhost目錄中有admin.xml和manager.xml,是兩個管理工具的部署描述符檔案。而這兩個檔案在Tomcat4中是放置在$CATALINA_HOME/webapps目錄下面的。呵呵。。。果然是換湯不換藥啊:)
注意事項:context descriptor的檔案名稱可以與Web應用程式名稱無關,但是Tomcat在部署這個應用程式的時候所建立的程式運行上下文(Context)的名稱是與Web應用程式名稱匹配的。
1.2 靜態部署
靜態部署是指在Tomcat運行之前就把相關的Web應用程式放置到合適的目錄,在Tomcat啟動的時候自動來部署這些應用程式。
如果"deployOnStartup"屬性值為true,那麼在Tomcat啟動時,在$appBase目錄下的web應用程式將被自動部署。部署的過程如下:
• Context元素宣告的Web應用程式將被首先部署,這包括server.xml和context descriptor檔案中的Context元素所指的應用程式;
• 部署擴充目錄形式的Web應用程式;
• 部署WAR形式的Web應用程式;
Tomcat5對於靜態方式的部署的增強主要就是:
1、對於context descriptor方式的應用程式的部署。
2、如果擴充目錄方式的應用程式對應有一個WAR檔案,且WAR是更新過的,擴充目錄將被自動刪除,Web應用程式將被從WAR檔案中重新部署。而在Tomcat4中,即使WAR檔案已更新也無法被重新部署,仍然會使用舊的擴充目錄方式的Web應用程式,除非你自己手動刪除目錄,記得還要重啟Tomcat哦。這麼麻煩?(#@($)#*$),看來還是Tomcat5好啊:)
1.3 動態部署
動態部署是指在Tomcat已經運行以後在不重啟伺服器的情況下部署應用程式的方式。
如果虛擬機器主機的"autoDeploy"屬性值為true,則主機會在需要的時候試圖去部署和更新應用程式。這是由虛擬機器主機在後台啟動並執行一個負責自動載入的處理線程來完成的,它的工作流程如下:
1、部署新放入$appBase目錄的War方式的應用程式。
2、部署新放入$appBase目錄的擴充目錄方式的應用程式。
3、如果一個擴充目錄方式的應用程式對應的War檔案更新了,則刪除此目錄,從War檔案中重新解開並部署。如果”unpackWARs”屬性值為false,則不解開,從War檔案中直接運行。(記住:不用自己刪除擴充目錄,也不用重啟伺服器)
4、如果應用程式的/WEB-INF/web.xml檔案被改變,則重新部署這個應用。
5、如果應用程式對應的Context元素配置發生了改變,則重新部署這個應用。這包括server.xml或者上下文描述符檔案中的Context元素。
6、如果$CATALINA_HOME/conf/[enginename]/[hostname]/目錄下增加了上下文描述符檔案,則重新部署這個應用。
看來Tomcat5在動態部署上花費了不少功夫,其中的亮點主要就是如果我們修改了web.xml、server.xml設定檔,增加了上下文描述符檔案,動態更新了War檔案時都可以實現應用程式的自動部署和更新,而不用重新啟動Tomcat伺服器,在Tomcat4中都是必須重新啟動伺服器的,這是一個非常喜人的變化。畢竟在對伺服器的健壯性和可靠性要求越來越高的今天,重啟伺服器都是一件令我們非常頭疼的一件事情。以後終於可以挺直腰杆對客戶說“這回堅決不用重啟伺服器!”嘿嘿。。。幸福啊!
1.4 用Client Deployer工具包部署
這個才是Tomcat5中名副其實的創新,它是一個全新的部署器。
client deployer是一個集驗證、編譯、部署功能與一體的工具包。它使用Ant來實現應用程式的自動化驗證和編譯,使用Manager管理工具來實現應用程式的自動化部署。
這個工具包包含:Catalina Ant工具、Jasper編譯器(用於將jsp編譯為servlet)、應用程式驗證器(validator task)。預設的驗證工具的實作類別是org.apache.catalina.ant.ValidatorTask,它只允許以擴充目錄的檔案路徑作為唯一的參數。
此部署工具包使用一個事先寫好的Ant指令碼,包含如下一些目標(target):
• compile (預設):用於驗證和編譯Web應用程式。它可以在不啟動Tomcat的情況下被單獨使用。由於使用的是新的Jasper編譯器的緣故,編譯後的應用程式將只能在Tomcat 5.X版本上使用。需要提醒的是,不光是jsp檔案被編譯為servlet, 應用程式的/WEB-INF/classes目錄下的Java源檔案也將被同時編譯為class檔案。
• deploy:將Web應用程式部署到Tomcat伺服器中。
• undeploy:從伺服器中解除部署已經部署的某個應用程式。
• start:啟動Web應用程式
• reload:重新載入Web應用程式
• stop:停止Web應用程式
以下是Ant指令碼中的一些重要屬性:
• build:編譯以後的檔案預設放置在${build}/webapp${path}。編譯目標執行完以後,產生了應用程式的War ―― ${build}/webapp${path}.war.
• webapp:放置需要被驗證和編譯的Web應用程式(擴充目錄方式)的檔案路徑。預設值為”myapp”。
• path:Web應用程式部署後對應的運行內容相關的路徑預設是”/myapp“。
• url:放置Manager管理工具的絕對路徑,它被部署工具包用來部署和解除部署應用程式。預設情況下,部署器將試圖使用http://localhost:8080/manager訪問原生Manager管理工具。
• username:可以使用Manager管理工具的超級使用者的使用者名稱。
• Password:超級使用者的密碼。