本文檔提供關於Tomcat的基礎信息
主要內容如下
Tomcat二進制版本安裝
與Tomcat相關的腳本的主要內容
與server
xml相關的主要內容
Tomcat的主要配置文件
如何設置Tomcat與宿主web服務器一起工作的說明
如何應用Tomcat配置一個現實中的web站點
希望此文檔足以使新用戶可以開始使用Tomcat
如找不到某方面的內容請(按以下順序)
查找Tomcat faq
查找Tomcat包清單
向Tomcat用戶郵件列表發出問題
如此疑問的答案不存在
我們鼓勵把對疑問的解答放入Tomcat faq或此文檔
如對此文檔有意見或建議
請發送到Tomcat的郵件列表
Getting Started
Tomcat是一個帶有jsp環境的servlet容器
servlet容器是一個根據用戶的行為可以管理和激活servlet的運行時的shell
粗略地可以將servlet容器分為如下幾類
獨立的servlet容器 內置有web服務器的一部分
指當使用基於Java的web服務器的情形
例如servlet容器是JavaWebServer的一個部分
獨立的servlet容器是Tomcat的默認模式
大多數的web服務器並非基於Java
因此
我們可以得出如下兩種容器的模式
進程內的servlet容器 servlet容器作為web服務器的插件和Java容器的實現
Web服務器插件在內部地址空間打開一個JVM(java virtual machine)使Java容器得以在內部運行
如有某個需要調用servlet的請求
插件將取得對此請求的控制並將他傳遞(使用JNI)給Java容器
進程內容器對於多線程
單進程的服務器非常合適並且提供很好的運行速度
但伸縮性有所不足
進程外的servlet容器
servlet容器運行於web服務器之外的地址空間且作為web服務器的插件和Java容器的實現的結合
web服務器插件和Java容器 JVM使用IPC機制(通常是TCP/IP)進行通訊
當一個調用servlet的請求到達時
插件將取得對此請求的控制並將其傳遞(使用IPC等)給Java容器
進程外容器的反應時間或進程外容器引擎不如進程內容器
但進程外容器引擎在許多其他可比的范圍內更好(伸縮性
穩定性等)
Tomcat既可作為獨立的容器(主要是用於開發與調試)又可作為對現有服務器的附加(當前支持Apache
IIS和Netscape服務器)
即任何時候配置Tomcat你都必須決定如何應用他
如選擇第二或第三種模式
你還需要安裝一個web服務器接口
Tomcat與Jserv有何區別?Tomcat是Jserv嗎?
這是個常見的誤解
Jserv是Servlet API
兼容並與Apache一起使用的容器
Tomcat是一個完全重寫的並與Servlet API
和JSP
兼容的容器
Tomcat使用了一些為Jserv而寫的代碼
特別是Jserv的Apache接口
但這是唯一的相同之處
怎樣安裝Tomcat的二進制版本?
非常簡單
只需
下載 zip/tar
gz 任何壓縮文件
從處
解壓縮此文件到某目錄(如
foo)
將會生成一子目錄
名為
tomcat
轉換到
tomcat
目錄設置一新的環境變量(TOMCAT_HOME)指向你安裝的tomcat的目錄
WIN
平台
鍵入
set TOMCAT_HOME=foo omcat
Unix平台
如是bash/sh環境
鍵入
TOMCAT_HOME=foo/tomcat
export TOMCAT_HOME
如是tcsh環境
鍵入
setenv TOMCAT_HOME foo/tomcat
設置環境變量JAVA_HOME指向你JDK的目錄
然後添加JAVA解釋器到你的PATH環境變量
好了!現在可以運行TOMCAT並作為一個獨立的Servlet容器(模式一)
啟動與關閉Tomcat
使用
bin
目錄中的腳本啟動與關閉Tomcat
啟動
uinx
bin/startup
sh
win
binstartup
關閉
unix
bin/shutdown
sh
win
binshutdown
Tomcat目錄結構
假設你已將Tomcat解壓
你已得到下列目錄結構
目錄名——描述
bin
包含啟動/關閉腳本
conf
包含不同的配置文件
包括 server
xml(Tomcat的主要配置文件)和為不同的Tomcat配置的web應用設置缺省值的文件web
xml
doc
包含各種Tomcat文檔
lib
包含Tomcat使用的jar文件
unix平台此目錄下的任何文件都被加到Tomcat的classpath中
logs
Tomcat擺放日志文件的地方
src
ServletAPI源文件
先別高興
這些只有些必須在Servlet容器內實現的空接口和抽象類
webapps
包含web項目示例
此外你可以Tomcat會創建如下目錄
work
Tomcat自動生成
放置Tomcat運行時的臨時文件(如編譯後的JSP文件)
如在Tomcat運行時刪除此目錄
JSP頁面將不能運行
classes
你可以創建此目錄來添加一些附加的類到類路徑中
任何你加到此目錄中的類都可在Tomcat的類路徑中找到自身
Tomcat的腳本
Tomcat是一個Java程序
因此在設置好幾個環境變量後即可用命令行的方式運行
然而設置Tomcat使用的每個環境變量和如下的命令行參數乏味且易錯
因此
Tomcat開發組提供了一些腳本使啟動和關閉Tomcat變得輕松
注意
這些腳本僅僅是個便利的方法去啟動和關閉Tomcat
你可修改他們來定制CLASSPATH
環境變量如PATH
LD_LIBRARY_PATH
等等
只要是生成一個正確的命令行即可
這些腳本是什麼呢?下表列出對一般用戶最重要的腳本
tomcat
主腳本
設置合適的環境變量
包括CLASSPATH
TOMCAT_HOME和JAVA_HOME和用適合的命令行參數啟動Tomcat
startup
在後台啟動Tomcat
tomcat start
命令的替換方式
shutdown
關閉Tomcat
tomcat stop
命令的替換方式
對用戶最重要的腳本是tomcat(tomcat
bat/tomcat
sh)
其他Tomcat相關的腳本作為一個簡單的面向單任務的指向Tomcat腳本(設置不同的命令行參數等)的入口
仔細考察tomcat
bat/tomcat
sh
它按以下步驟運行
在Unix下的步驟
如未指定
推測 TOMCAT_HOME
如未指定
推測 JAVA_HOME
設置CLASS_PATH包含
${TOMCAT_HOME}/classes目錄(如果存在)
${TOMCAT_HOME}/lib的一切內容
${JAVA_HOME}/lib/tools
jar(此jar文件包含工具javac
我們需要javac處理jsp文件
運行帶有設定Java環境變量的命令行參數的java命令
調入tomcat
home
和org
apache
tomcat
startup
Tomcat 作為啟始類
同時也傳遞命令行參數到org
apache
tomcat
startup
Tomcat
例如
執行start/stop/run 等的操作
此Tomcat進程使用指向server
xml的路徑
例如server
xml放置於etc/server_
xml並且用戶意圖在後台啟動apache
鍵 入如下命令行
bin/tomcat
sh start –f /etc/server_
xml
在Win
下的步驟
(略)
由此可見
win
版的tomcat
bat與Unix版的幾乎一致
尤其在它不推測TOMCAT_HOME和JAVA_HOME的值
並且不將所有的jar文件放入類路徑中
Tomcat的配置文件 Tomcat的配置基於兩個配置文件
server
xml
Tomcat的全局配置文件
web
xml
在Tomcat中配置不同的關系環境
這一部分將講述如何使用這些文件
我們不會包含web
xml的內部機制
這些內部機制深入到了Servlet API的細節
因此
我們將討論涵蓋servler
xml內容及web
xml在Tomcat關系環境中的用法
server
xml
server
xml是Tomcat的主配置文件
完成兩個目標
提供Tomcat組件的初始配置
說明Tomcat的結構
含義
使得Tomcat通過實例化組件完成起動及構建自身
如在server
xml所指定的
下表描述server
xml種的重要元素
元素及其描述 Server server
xml文件中最重要的元素
Server定義了一個Tomcat服務器
一般你不用對他擔心太多
Server元素能包含Logger和ContextManager元素類型
Logger此元素定義一個Logger對象
每個Logger都有一個名字去標識
也有一個紀錄Logger的輸出和冗余級別(描述此日志級別)和包含日志文件的路徑
通常有servlet的Logger(ServletContext
log()處)
JSP和Tomcat運行時的Logger
ContextManager
ContextManager說明一套ContextInterceptor
RequestInterceptor
Context和他們的Connectors的配置及結構
ContextManager有幾個隨同提供的特性
用來紀錄調試信息的調試級別
webapps/
conf/
logs/和所有已定義的環境的基本位置
用來使Tomcat可以在TOMCAT_HOME外的其他目錄啟動
工作目錄的名字
ContextInterce
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28767.html