Tomcat中部署Java Web應用程序的幾種方式

在Tomcat中部署Java Web應用程序有兩種方式:靜態部署和動態部署。

在下文中$CATALINA_HOME指的是Tomcat根目錄。 
一、靜態部署 
     靜態部署指的是我們在服務器啓動之前部署我們的程序,只有當服務器啓動之後,我們的Web應用程序才能訪問。以下3中方式都可以部署: 
    1、將PetWeb目錄拷貝到$CATALINA_HOME\webapps下,然後啓動服務器就可以了。這種方式比較簡單,但是web應用程序必須在webapps目錄下。訪問地址如下: 
http://localhost:8080/PetWeb/ 
   2、這種方式可以不必將PetWeb目錄拷貝到webapps下,直接在F:\部署。方法如下,更改$CATALINA_HOME\conf\server.xml文件,在<host>標籤內添加<Context>標籤,內容如下: 
<Context docBase="F:/PetWeb" reloadable="false" path="/Pet"/> 
其中reloadable="false"表示當應用程序中的內容發生更改之後服務器不會自動加載,這個屬性在開發階段通常都設爲true,方便開發,在發佈階段應該設置爲false,提高應用程序的訪問速度。docBase爲路徑,可以使用絕對路徑,也可以使用相對路徑,相對路徑相對於webapps。path屬性的值是訪問時的根地址。訪問地址如下:http://localhost:8080/Pet/ 
    3、這種方式和第二種方式差不多,但是不是在Server.xml文件中添加Context標籤,而是在$CATALINA_HOME\conf\Catalina\localhost中添加一個xml文件,如Pet.xml,內容如下: 
<Context docBase="F:/PetWeb" reloadable="false" />大家可能發現和第二種方式差不多,但是缺少了path屬性,這種方式服務器會使用.xml的名字作爲path屬性的值。訪問地址如下:http://localhost:8080/Pet/ 
    
    我們剛纔是將PetWeb文件夾部署在了服務器中,我們知道可以將Web應用程序的內容打成.war包,然後在部署在服務器上。打包請參考如下步驟: 
    1、打開命令提示符(Start-->Run-->cmd) 
    2、設置jdk環境變量 
    3、在命令提示符中進入F:\PetWeb文件後,鍵入如下命令: 
jar ..\Pet.war *.*  這樣在F:\下應該有Pet.war文件。其中..表示當前目錄的父目錄。 
     部署Pet.war文件非常簡單,將剛纔有docBase="F:\PetWeb"更改爲docBase="F:\Pet.war"或者直接將其拷貝到webapps下也可以。重新啓動服務器就可以將Pet.war部署爲一個Web應用程序了。如果你夠細心的話你會發現,服務器將Pet.war文件解開,並且在webapps下面又生成了一個Pet文件夾,然後把Pet.war的內容拷貝到裏面去了。我們可以通過以下方式取消自動解壓縮,配置方式如下: 
<Context docBase="F:/PetWeb" reloadable="false" unpackWAR="false"/> 
二、動態部署 
    動態部署是指可以在服務器啓動之後部署web應用程序,而不用重新啓動服務器。動態部署要用到服務器提供的manager.war文件,如果在$CATALINA_HOME\webapps\下沒有該文件,你必須去重新下載tomcat,否則不能完成以下的功能。要想使用該管理程序必須首先編輯$CATALINA_HOME\conf\tomcat-users.xml文件, 
上文且說到tomcat-users.xml文件,這個文件中的內容是不依賴於任何一個web應用程序,所以在任何一個web程序中都可以使用,如果這些用戶和角色只對你的應用起作用,那麼你完全可以放置在你自己的應用程序中,比如WEB-INF中.下面我們將上次加入到tomcat-users.xml文件中的內容,加入到我們在WEB-INF下新建的myUser.xml文件中,注意此文件應該是以<tomcat-users>爲根目錄,如下所示: 
<tomcat-users> 
  <!--定義角色--> 
  <role rolename="suozhangshi"/> 
  <role rolename="guahaoshi"/> 
  <role rolename="danganshi"/> 
  <!--定義用戶,並加入到角色中--> 
  <user username="gua1" password="gua1" roles="guahaoshi"/> 
  <user username="gua2" password="gua2" roles="guahaoshi"/> 
  <user username="dang1" password="dang1" roles="danganshi"/> 
  <user username="dang2" password="dang2" roles="danganshi"/> 
  <user username="suo1" password="suo1" roles="suozhangshi"/> 
  <user username="suo2" password="suo2" roles="suozhangshi"/> 
</tomcat-users> 

    這個文件已經建立好了,那麼怎麼告訴Tomcat加載這個文件呢?我們通過下面這一種方式,在你的Web應用程序中的META-INF文件夾中加入Context.xml 文件,這樣當此應用程序部署的時候,就會加載該文件的內容,內容如下: 
<Context> 
  <Realm className="org.apache.catalina.realm.MemoryRealm" 
         pathname="webapps/SecurityWeb/WEB-INF/myUsers.xml" /> 
</Context> 
    Realm標籤中className屬性定義了使用MemoryRealm類從pathname處加載xml文件。。還要注意這裏的pathname它是以相對Tomcat根目錄的,所以上文件路徑應該從webapps開始。最後重新啓動服務器再訪問你程序,應該能夠看到和上次相同的效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章