本文档提供关于Tomcat的基础信息主要内容如下:
Tomcat二进制版本安装
与Tomcat相关的脚本的主要内容
与serverxml相关的主要内容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既可作为独立的容器(主要是用于开发与调试)又可作为对现有服务器的附加(当前支持ApacheIIS和Netscape服务器)即任何时候配置Tomcat你都必须决定如何应用他如选择第二或第三种模式你还需要安装一个web服务器接口
Tomcat与Jserv有何区别?Tomcat是Jserv吗?
这是个常见的误解Jserv是Servlet API兼容并与Apache一起使用的容器Tomcat是一个完全重写的并与Servlet API和JSP兼容的容器
Tomcat使用了一些为Jserv而写的代码特别是Jserv的Apache接口但这是唯一的相同之处
怎样安装Tomcat的二进制版本?
下载 zip/targz 任何压缩文件从处
解压缩此文件到某目录(如: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/startupsh
win:bin\startup
关闭:
unix:bin/shutdownsh
win:bin\shutdown
Tomcat目录结构
假设你已将Tomcat解压你已得到下列目录结构:
目录名描述
bin
包含启动/关闭脚本
conf
包含不同的配置文件
包括 serverxml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件webxml
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环境变量如PATHLD_LIBRARY_PATH等等只要是生成一个正确的命令行即可
这些脚本是什么呢?下表列出对一般用户最重要的脚本
tomcat
主脚本设置合适的环境变量包括CLASSPATHTOMCAT_HOME和JAVA_HOME和用适合的命令行参数启动Tomcat
startup
在后台启动Tomcattomcat start命令的替换方式
shutdown
关闭Tomcattomcat stop命令的替换方式
对用户最重要的脚本是tomcat(tomcatbat/tomcatsh)其他Tomcat相关的脚本作为一个简单的面向单任务的指向Tomcat脚本(设置不同的命令行参数等)的入口
仔细考察tomcatbat/tomcatsh它按以下步骤运行:
在Unix下的步骤
如未指定推测 TOMCAT_HOME
如未指定推测 JAVA_HOME
设置CLASS_PATH包含:
${TOMCAT_HOME}/classes目录(如果存在)
${TOMCAT_HOME}/lib的一切内容
${JAVA_HOME}/lib/toolsjar(此jar文件包含工具javac我们需要javac处理jsp文件
运行带有设定Java环境变量的命令行参数的java命令调入tomcathome和orgapachetomcatstartupTomcat 作为启始类同时也传递命令行参数到orgapachetomcatstartupTomcat 例如:
执行start/stop/run 等的操作
此Tomcat进程使用指向serverxml的路径
例如serverxml放置于etc/server_xml并且用户意图在后台启动apache键 入如下命令行:
bin/tomcatsh start ?f /etc/server_xml
在Win下的步骤(略)
由此可见win版的tomcatbat与Unix版的几乎一致尤其在它不推测TOMCAT_HOME和JAVA_HOME的值并且不将所有的jar文件放入类路径中
Tomcat的配置文件
Tomcat的配置基于两个配置文件:
serverxml Tomcat的全局配置文件
webxml 在Tomcat中配置不同的关系环境
这一部分将讲述如何使用这些文件我们不会包含webxml的内部机制这些内部机制深入到了Servlet API的细节因此我们将讨论涵盖servlerxml内容及webxml在Tomcat关系环境中的用法
serverxml
serverxml是Tomcat的主配置文件完成两个目标:
提供Tomcat组件的初始配置
说明Tomcat的结构含义使得Tomcat通过实例化组件完成起动及构建自身 如在serverxml所指定的
下表描述serverxml种的重要元素:
元素及其描述
Server
serverxml文件中最重要的元素Server定义了一个Tomcat服务器一般你不用对他担心太多Server元素能包含Logger和ContextManager元素类型
Logger
此元素定义一个Logger对象每个Logger都有一个名字去标识也有一个纪录Logger的输出和冗余级别(描述此日志级别)和包含日志文件的路径通常有servlet的Logger(ServletContextlog()处)JSP和Tomcat运行时的Logger
ContextManager
ContextManager说明一套ContextInterceptor RequestInterceptor Context和他们的Connectors的配置及结构ContextManager有几个随同提供的特性:
用来纪录调试信息的调试级别
webapps/conf/logs/和所有已定义的环境的基本位置用来使Tomcat可以在TOMCAT_HOME外的其他目录启动
工作目录的名字
ContextInterceptor&RequestInterceptor
这些侦听器(interceptors)侦听具体发生在ContextManager中的事件例如ContextInterceptor侦听Tomcat的启动及终止事件RequestInterceptor监视在它服务过程中用