Tomcat 是一款優秀的JSP/Servlet容器,最初由SUN開發,后來被貢獻給了Apache社區。Tomcat現在的版本已到6。Tomcat6實現了 Servlet2.5和JSP2.1規范。針對web開發和web服務,提供了更多的新功能。本文使用的版本為Tomcat6.0.14,要求的JDK版本至少為1.5。Tomcat不同版本間的配置有差異,如果讀者使用的是其他版本,請仔細閱讀Tomat官方文檔,或者到網上尋找相關的資料。
Tomcat有安裝版和解壓縮版兩種版本,安裝版除了提供一個圖形界面的后臺和Windows服務外,其他的和解壓縮版沒有區別。我使用壓縮版。
第一步,我們需要下載Tomcat,下載地址是http://tomcat.apache.org。下載完成后,解壓縮,我的Tomcat位于C:\Tomcat6下,以下用$TOMCAT表示這個目錄。
第二步,啟動和停止
$TOMCAT\bin下面是Tomcat用到的腳本程序,擴展名為.bat是用于windows平臺的批處理文件,擴展名為.sh的是用于linux或Unix平臺的腳本。我們通常用到的是startup.bat、shutdown.bat腳本。我們也可以用catalina.bat start啟動Tomcat,用catalina.bat stop關閉Tomcat,事實上,startup.bat正是catalina.bat start的別名,同理shutdownup.bat 是catalina.bat stop的別名。
Catalina.bat才是操作Tomcat的核心腳本,可以通過catalina –help查看catalina可以使用的參數及其說明。啟動Tomcat后,我們輸入如下網址:http://localhost:8080/,如果看到Tomcat的頁面,證明安裝成功,如果不成功,請檢查是否設置了正確的JAVA_HOME,JDK的版本是否太低。如果還是不成功,可能是端口沖突,下面將會介紹如何修改端口號。
TOMCAT配置
$TOMCAT\conf下是Tomcat的配置文件,最重要的配置文件是Servler.xml。Server.xml可以重新指定,方式是catalina.bat –config,比如指定config.xml取代Servler.xml,命令如下:
catalina.bat run –config conf\config.xml
Server.xml中可以配置部署應用需要的所有信息,從Tomcat5開始,應用配置可以從Server.xml獨立出來,這也是 Tomcat現在所推薦的配置方式,帶來的一個好處,顯而易見,更容易維護了。另一個好處,是在Servler.xml的修改,只能通過重啟Tomcat 才能發生作用,分拆后,修改完成,可以不用重啟Tomcat就發生作用。本文就采用這種配置方式。下面進行詳細的介紹。
(1) 端口的修改
Server元素下可以有多個Service,端口就是在Service元素下配置的。Connector元素的配置如下:
- <Connnector port=”8080” protocal=”HTTP/1.1” connectionTimeout=”20000” redirectPort=”8443”/>
<Connnector port=”8080” protocal=”HTTP/1.1” connectionTimeout=”20000” redirectPort=”8443”/>
其中protocal制定了該端口偵聽的協議類型,HTTP/1.1表示偵聽的是客戶的HTTP請求,即我們通過瀏覽器訪問需要輸入的端口,當端口號是80的時候,可以不用在瀏覽器地址欄輸入端口號,這就是我們訪問很多網站不需要指定端口的原因。有時候protocal沒有指定,這時候默認的是HTTP/1.1。注意這個端口必須是閑置的。
Service下面可以配置多個端口,用于偵聽不同的協議。
(2) 虛擬主機
Service元素下必須有一個Engine元素,Engine有一個名稱,和一個默認的虛擬主機名,形式如下:
- <Engine name="Catalina" defaultHost="localhost">
<Engine name="Catalina" defaultHost="localhost">
虛擬主機就配置在Engine元素下。形式如下:
- <Host name="localhost" appBase="webapps"
-
- unpackWARs="true" autoDeploy="true"
-
- xmlValidation="false" xmlNamespaceAware="false">
-
- </Host>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
name是虛擬主機的名字,appBase是虛擬主機指向的目錄,Tomcat啟動時,會自動加載appBase下的應用。 unpackWARs表示是否自動解壓縮appBase下已打成WAR包的應用,autoDeploy表示在服務器運行的時候,將一個應用放入 appBase下,是否自動部署。
Tomcat應用部署
應用可以配置在Server.xml中,這里介紹分拆后的配法。
應用的獨立配置文件應該配置在路徑$TOMCAT\conf\engineName\hostName\下,其中engineName是應用所在的Engine的名字,對于本例而言是Catalina,hostName是應用所在的虛擬主機的名字,本例為localhost。配置文件的名字是這樣約定的:如果訪問路徑就在虛擬主機下,那么名字為ROOT,如:ROOT.xml,其他情況下,文件名就是訪問路徑,不過需要用#替換路徑中的/。本例中訪問路徑為/struts,相應的文件名是struts.xml,內容如下:
- <Context docBase="C:/WAP/struts" reloadable="true"/>
<Context docBase="C:/WAP/struts" reloadable="true"/>
其中docBase指定應用所在的目錄,如果是相對目錄,對應的就是虛擬主機下appBase的目錄,也可以是絕對目錄,這個時候應用在什么地方都可以。reloadable表示是否支持熱部署,比如class更新,如果reloadable為true,應用會重新部署。注意:在分拆后, Context的path屬性將不再起作用,這是Tomcat6和之前的版本不同的地方。
以上配置完成,我們就可以訪問應用了,訪問地址是http://localhost:8080/struts
下面介紹資源的配置
這里指的主要是數據源的配置。Tomcat6使用的是DBCP數據源,它的配置方式如下:
- <Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"
-
- maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
-
- url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/>
<Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/>
它可以直接配置在Context元素下,這時數據源就只有他所屬的應用能夠訪問。如果需要所有的應用能夠訪問,可以配置在$TOMCAT\conf\context.xml中,直接配置下根元素下即可。這個文件在啟動tomcat的時候,所有的應用都會加載。
如果需要節省資源,共享同一個數據源,可以配置在Server.xml的GlobalNamingResources節點下,在應用中可以通過別名訪問,提供別名的方式是在應用所在的元素下添加如下的子元素,例:
- <ResouceLink name=”jdbc/test2” global=”jdbc/test” type=”javax.sql.DataSource”/>
<ResouceLink name=”jdbc/test2” global=”jdbc/test” type=”javax.sql.DataSource”/>
name就是別名,global是在GlobalNamingResources所定義的資源。