1. Tomcat版本和支持的API和JDK版本
Apache Tomcat | Servlet API | JSP API | JDK |
7.0 | 3.0 | 2.2 | 1.6 |
6.0 | 2.5 | 2.1 | 1.5 |
5.5 | 2.4 | 2.0 | 1.4 |
4.1 | 2.3 | 1.2 | 1.3 |
3.0 | 2.2 | 1.1 | 1.1 |
2. 比较好的tomcat的资料:
官网:http://tomcat.apache.org
Tomcat mailing lists:http://tomcat.apache.org/lists.html
一个比较关于tomcat的网站:www.tomcatexpert.com
3. tomcat的架构组件
<Server>
<Service>
<Connector />
<Engine>
<Host>
<Context> </Context>
</Host>
</Engine>
</Service>
</Server>
<Server>代表整个Catalina servlet engine,作为一个tomcat实例的顶级元素,<Server>元素可以包含一个
或者多个<Service>容器
<Service>容器可以包含一个或者多个<Connector>元素和一个<Engine>元素,多个<Service>元素可以放到一个<Server>元素中。
<Connector>元素定义类,这个类做真正的请求和响应处理。
<Engine>元素,每个<Service>元素可以仅仅只有一个<Engine>元素,这个<Engine>元素处理被<Connector>元素接收到的所有请求。
<Host>元素定义虚拟主机,它被包含在每个<Engine>的实例中,每个<Host>元素可以包含多个web applications。
每个<Context> 元素代表一个单独的web application,没有任何限制在<host>中的<Context>元素。
4. Tomcat的目录结构
目录 | 内容 |
/bin | 包含windows和Linux下的开启和关闭脚本,tomcat启动时必要的jar包也放在这个目录 |
/conf | 包含主要的配置文件,两个最主要的配置文件是server.xml和全局的web.xml |
/lib | 包含tomcat的jar包,共享的组件。所有发布到tomcat的web application都可以访问该目录的包,这个包含Servlet API和JSP API包 |
/logs | 包含tomcat的日志文件 |
/temp | 临时文件系统存储 |
/webapps | 所有web application发布到的地方,就是放你war包的地方 |
/work |
tomcat的工作目录,tomcat放从jsp形成的所有servlets到该目录,如果你想要看一个特定的jsp怎么编译,你应该看该目录 |
5. 执行tomcat脚本
在bin目录中最重要的执行脚本是Catalina脚本,这个脚本负责启动和关闭tomcat,它接受不同的命令行参数为不同的操作。
(Catalina脚本仅仅可以使用对于zip版本来说,如果你下载的是Windows service installer版本,你不能访问Catalina脚本,你可以使用tomcat7w.exe GUI应用来管理tomcat服务)
下面是你可以使用的Catalina的命令行参数
命令行参数 | 描述 |
catalina start | 开启tomcat服务做为单独的进程,在windows,tomcat将会开启以新的命令行窗口,在linux,tomcat以后台进程开启,你还可以继续使用命令行 |
catalina stop | 关闭tomcat服务 |
catalina run | 以当前的窗口/终端开启tomcat服务,在windows,tomcat开启的输出信息将会被添加到当前的窗口,而在linux下,tomcat进程将会运行在当前的终端会话,它将会很有用,对于侦测tomcat启动失败的原因 |
catalina debug | 以debug的模式启动tomcat |
catalina version | 显示tomcat的版本 |
catalina configtest | 检测当前的tomcat配置是否正确,这个脚本将会试着开启tomcat服务,加载所有的配置文件,如果配置正确,则优雅的关闭,如果任何配置有问题,它将会报告问题 |
catalina jpda start | 以java platform debugging architecture(JPDA)的debug模式开启tomcat |
你可以添加-security的选项到任何start command中,tomcat将会伴随着security manager开启的状态开启服务。
6. 传运行选项到Catalina脚本
JAVA_OPTS环境变量包括可用的选项是针对运行在该机器上的所有java进程,包括tomcat,例如,为了是JVM读取文件使用UTF-8编码,你可以添加file.encoding参数到JAVA_OPTS环境变量:
export JAVA_OPTS="-Dfile.encoding=utf-8"
当你设置完这个之后,启动tomcat服务,它将会读取文件使用UTF-8编码,但是这个不仅仅对于tomcat进程,而是对于所有JVM进程。
为了传递特定的JVM参数到tomat,你可以使用CATALINA_OPTS环境变量,例如:添加更多的heap memory到tomcat进程,并不会影响其他java应用的内存设置,下面就是导入内存设置到CATALINA_OPTS变量:
export CATALINA_OPTS=" –Xms256m -Xmx1g -XX:MaxPermSize=256m"
当你设置完之后,开启tomcat服务,catalina start脚本会按照配置设置JVM内存设置,会使用1G的最大heap size。
你必须要重启tomcat,对于任何JAVA_OPTS或者CATALINA_OPTS的环境变量。
7. tomcat的配置文件
tomcat主要的配置文件是server.xml,它在conf目录。tomcat中主要的元素,像engines, hosts, contexts都配置在该文件,你可以读更多的信息在该文件。
context.xml配置包含默认的context设置,它被共享在所有的tomcat contexts。
除了在server.xml和context.xml文件中的全局的context配置,每个context有他们自己的配置文件,该配置文件在conf目录。context配置文件的位置依赖与engine名字和host名字。配置文件定位在:
CATALINA_HOME/conf/ENGINE_NAME/HOST_NAME/CONTEXT_NAME.xml
例如:如果你部署一个web到context apress,使用默认的host(localhost),在标准的Catalina engine中,配置文件应该定位在:
CATALINA_HOME/conf/Catalina/localhost/apress.xml
8. Java Web Application
一个Java Web Application是包含一系列servlets, html, classes和其他资源,可以运行在多个containers上的东东。
一个Java Web Application主要特性之一就是和ServletContext的关系,每个web application仅仅只有一个ServletContext。这个关联是由servlet container控制,servlet container保证,当访问ServletContext中的对象时,没有两个web application崩溃。
9. 一个Java Web Application的目录结构
例子:
目录 | 说明 |
/apress | 一个web application的根目录,所有的jsp和html文件应该放在这里,通常每种类型的静态文件应该放在各自的目录中(images/,styles/,js/) |