將Java web應用部署到Tomcat 及部署到Tomcat根目錄 的三種方式

Tomcat做爲Servlet/JSP容器(服務器)挺不錯的,開源免費,須要知道的是Tomcat是一個Web服務器,其符合Servlet/JSP規範,可是卻沒有實現全部JavaEE規範,因此咱們仍是應該規範說法,稱Tomcat爲一個JavaWeb服務器,而不是JavaEE服務器linux

咱們使用IDE部署JavaWeb項目基本上都是一鍵完成,這是IDE給咱們該來的好處,可是仍是有必要了解一下部署項目的細節web

要將JavaWeb應用部署到Tomcat,須要顯式或隱式定定義一個Tomcat上下文。在Tomcat中,每個Tomcat上下文都表示一個Web應用程序。因此咱們也將分爲隱式和顯式兩種方式來進行總結apache

顯式部署

顯式部署總的來講就是以目錄結構的方式部署,不打包,只要項目根目錄(Maven爲webapp  普通項目爲webRoot/webContent)有WEB-INF(WEB-INF下有classes,jar包,配置文件),有靜態資源(HTML,CSS,JS ,圖片等)便可。再經過一個在Tomcat中的配置文件來將咱們的程序發佈出來。tomcat

顯式部署有兩種方式:服務器

  • 在Tomcat的conf/Catalina/localhost目錄下建立一個XML文件
  • 在Tomcat的conf/server.xml文件中添加一個Context元素

方式一

若是決定給每個上下文都建立一個XML文件(第一種方式),那麼這文件名就很重要了,由於上下文路徑就是從這個文件名的衍生獲得的。例如,將一個Demo1.xml文件放在conf/Catalina/localhost目錄下,那麼這個應用程序的上下文路徑就是Demo1,訪問的URL就爲:http://localhost:8080/Demo1markdown

這個上下文文件只有一行代碼:app

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>

這裏的docBase是必須的屬性,它定義了應用程序的位置。reloadable屬性是可選的,若是存在而且值爲true,那麼一旦程序中Java類文件或者是其餘資源文件有任何添加,減小或者是更新,TOmcat均可以檢測到,而且從新加載該應用程序webapp

當把上下文文件添加到Tomcat的指定目錄下,Tomcat就會自動加載應用程序。當刪除這個文件時,Tomcat就會自動卸載應用程序post

方式二

在conf/server.xml文件中的Host標籤下添加一個Context元素測試

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      
      <Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context>

</Host>

以第一種方式不一樣之處在於此處定義上下文須要給上下文路徑定義path屬性,這個path屬性的值表示須要訪問的項目名,訪問的URL就爲:http://localhost:8080/Demo2

通常來講,不建議經過server.xml來管理上下文,由於修改後只有重啓Tomcat後,配置才能生效。不過,若是有多個應用程序須要測試,使用這種方式或許更爲方便,由於能夠在一個文件中同時管理全部的應用程序

隱式部署

方式三

隱式部署真是太方便了,很是建議使用這種方式部署項目。經過將一個war文件或者整個應用程序複製到Tomcat的webapps(Tomcat默認的部署項目位置,能夠在server.xml文件中修改,但不建議修改)目錄下,啓動服務器就能夠了

**將應用部署到Tomcat根目錄的三種方法

將應用部署到Tomcat根目錄的目的是能夠經過「http://[ip]:[port]」直接訪問應用,而不是使用「http://[ip]:[port]/[appName]」上下文路徑進行訪問。

方法一:(最簡單直接的方法)

刪除原 webapps/ROOT 目錄下的全部文件,將應用下的全部文件和文件夾複製到ROOT文件夾下。

方法二:

刪除原webapps/ROOT 目錄下的全部文件,修改文件「conf/server.xml」,在Host節點下增長以下Context的內容配置:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    ......
    <Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war"></Context>
</Host>

注意:

1)path 的值設置爲空;
2)應用不要放到tomcat的webapps目錄下(如上述配置是放到自定義的文件夾myapps內的),不然訪問時路徑會有問題;
3)docBase指定到絕對路徑。

如配置此設置後重啓tomcat,若是docBase指向的是war文件,則會自動將war解壓到 webapps/ROOT 目錄;若是docBase指向的是應用已解壓好的目錄,如 docBase=」C:/apache-tomcat-6.0.32/myapps/bc」 ,則tomcat不會生成 webapps/ROOT 目錄(這種狀況下,這樣就能夠不用刪除 webapps/ROOT 目錄,但 webapps/ROOT 目錄內的內容是沒法訪問的),訪問時將直接使用docBase指定的目錄。

方法三:

與方法二相似,但不是修改全局配置文件「conf/server.xml,而是在「conf/Catalina/localhost」目錄下增長新的文件」ROOT.xml」(注意大小寫),文件內容以下:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war" reloadable="true">
</Context>

注意:

Tomcat5.0如下版本在d:/Tomcat/conf/Catalina/localhost目錄下會自動生成了一個ROOT.xml文件,可是5.0以上版本已再也不生成此文件。

參考資料:
[1].http://www.linuxidc.com/Linux/2011-12/48939.htm
[2].http://nj-apple-tree.iteye.com/blog/1635953

相關文章
相關標籤/搜索