在Tomcat中部署Web程序的幾種方式

在Tomcat中部署Java Web應用程序有兩種方式:靜態部署和動態部署。在下文中$CATALINA_HOME指的是Tomcat根目錄。 
1、靜態部署 
     靜態部署指的是咱們在服務器啓動以前部署咱們的程序,只有當服務器啓動以後,咱們的Web應用程序才能訪問。如下3中方式均可以部署: 
    一、將PetWeb目錄拷貝到$CATALINA_HOME\webapps下,而後啓動服務器就能夠了。這種方式比較簡單,可是web應用程序必須在webapps目錄下。訪問地址以下: 
http://localhost:8080/PetWeb/  
   二、這種方式能夠沒必要將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/  
    三、這種方式和第二種方式差很少,可是不是在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包,而後在部署在服務器上。打包請參考以下步驟: 
    一、打開命令提示符(Start-->Run-->cmd) 
    二、設置jdk環境變量 
    三、在命令提示符中進入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"/> 
2、動態部署 
    動態部署是指能夠在服務器啓動以後部署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開始。最後從新啓動服務器再訪問你程序,應該可以看到和上次相同的效果
相關文章
相關標籤/搜索