本文檔提供關於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\tomcat
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
:bin\startup
關閉:
unix:bin/shutdown
sh
win
:bin\shutdown
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外的其他目錄啟動
工作目錄的名字
ContextInterceptor&RequestInterceptor
這些偵聽器(interceptors)偵聽具體發生在ContextManager中的事件
例如
ContextInterceptor偵聽Tomcat的啟動及終止事件
RequestInterceptor監視在它服務過程中用
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27917.html