web應用程式分為開發和部署兩個階段。通過部署,能實現組件與組件之間的松耦合,降低web應用的維護難度。本篇主要討論如何配置任意目錄下的web程式以及如何以war檔案的形式發布web程式。我們首先討論如何配置任意目錄下的web程式。
配置任意目錄下的web程式
一個web容器可以運行多個web程式,每個web程式都有一個唯一的上下文根,上下文根如何部署是和具體的web容器相關的。對於tomcat來說,安裝目錄下的webapps檔案夾下的每一個子目錄都是一個獨立的web應用程式,這個子目錄的名字就是這個web應用程式的上下文根。我們在之前開發並編譯好web應用程式源碼後,會把程式拷貝到webapps檔案夾下。當tomcat啟動時,會自動載入該檔案夾下的程式,所以我們不需要其他配置就可以直接存取。但是如果我們每完成一個功能,為了測試,都需要將檔案複製到webapps檔案夾下對應的目錄中,那也太繁瑣了。
在web伺服器中可以配置虛擬目錄,虛擬目錄對應的真實目錄可以在任何路徑下。同樣,tomcat中,也有類似的配置。我們需要在xml設定檔中通過<Context>元素的設定來完成。
className ,指定實現org.apache.catalina.Context介面的Java類名。如果沒有指定,使用標準實現org.apache.catalina.core.StandardContext。
cookies,如果想利用cookies來傳遞session identifier(需要用戶端支援cookies),設為ture。否則為false,這種情況下只能依靠URL Rewriting傳遞session identifier。
crossContext,如果想在應用內調用ServletContext.getContext()來返回在該虛擬機器主機上啟動並執行其他web application的request dispatcher,設為true。在安全性很重要的環境中,設為false,使得getContext()總是返回null。預設值為false。
docBase,該web應用的文檔基準目錄(Document Base,也稱為Context Root),或者是WAR檔案的路徑。可以使用絕對路徑,也可以使用相對於context所屬的Host的appBase路徑。
path,web應用的context路徑。catalina將每個URL的起始和context path進行比較,選擇合適的web應用處理該請求。特定Host下的context path必須是惟一的。如果context path。
reloadable,如果希望Catalina監視/WEB-INF/classes/和/WEB-INF/lib下面的類是否發生變化,在發生變化的時候自動重載web application,設為true。這個特徵在開發階段很有用,但也大大增加了伺服器的開銷。因此,在發布以後,不推薦使用。但是,你可以使用Manager應用在必要的時候觸發應用的重載。
unpackWAR,如果為true,tomcat在運行web應用程式前將展開所有壓縮的web應用程式。預設值為true。
WAR檔案
如果一個web應用程式的目錄和程式非常多,那麼將該web應用程式部署到另一台機器上就不是很方便了。我們可將web應用程式打包為web歸檔(WAR)檔案,這個過程和把java類檔案打包成JAR檔案的過程類似。利用WAR檔案,可以把servlet類檔案和相關的資源集中到一起進行發布。
如果利用命令列來打包的話,可以進入dos命令,然後切換到web工程所在目錄。執行如下命令:
jar -cvf 工程名.war *
即可將工程所有的子目錄和檔案都打包成一個名為工程名.war的歸檔檔案。如果不想包含src目錄下的java源檔案,可以執行下面的命令:
jar -cvf 工程名.war *.html WEB-INF/
如果使用eclipse開發web應用程式。那麼只需要先再eclipse中配置tomcat外掛程式,然後建立一個web工程。按右鍵web工程,選擇export,選擇web,WAR file,再輸入要打包的檔案名稱和目標目錄即可。eclipse tomcat外掛程式為:http://www.eclipsetotale.com/tomcatPlugin.html(將得到的壓縮包解壓,放入
eclipse 的 plugins 目錄中重啟 eclipse, Tomcat 外掛程式就會安裝成功)
轉載請註明出處:http://blog.csdn.net/iAm333