Tomcat相关知识
1.Tomcat版本
Tomcat |
JDK |
JavaEE |
Servlet |
JSP |
9.x |
8及更高的版本 |
JavaEE8 |
4.0 |
2.4? |
8.x |
7及更高的版本 |
JavaEE7 |
3.1 |
2.3 |
7.x |
6及更高的版本 |
JavaEE6 |
3.0 |
2.2 |
6.x |
5及更高的版本 |
JavaEE5 |
2.5 |
2.1 |
5.x |
1.4及更高的版本 |
JavaEE1.4 |
2.4 |
2.0 |
4.x |
1.3及更高的版本 |
JavaEE1.3 |
2.3 |
1.2 |
3.x |
1.1及更高的版本 |
JavaEE1.3 |
2.2 |
1.1 |
Tomcat安装
1.exe文件
2.rar文件
在安装的过程中需要注意的是:tomcat尽量不要存放在目录名称为中文的目录中。
在环境变量中添加CLASSPATH="%JAVA_HOME%"\lib;
Tomcat目录结构
1、bin目录
这个目录只要是存放了一些bat文件或者sh文件。比如说我们需要启动tomcat的bat就在这个目录下
启动tomcat的方式:
1).点击 startup.bat可以启动tomcat
2).在黑窗口下运行 catalina.bat 后面需要跟命令:start启动 stop关闭
3).关闭容器 shutdonw.bat或者是直接关闭黑窗口。
2、conf
这个目录中存放的都是一些配置文件 xml
3、lib
这个目录中存放的是一些jar文件。
这里的jar文件重要有两大类:
1)tomcat自身的jar,
2)实现javaEE平台下部分标准的实现类(比如:jsp servlet...)
4、log
存放的都是tomcat的日志文件。如果我们想了解黑窗口在启动时的打印信息,可以进到这个目录下找到cataline.log文件在这个文件中可以看到相关记录。
5、temp
在这个目录中存放的是tomcat在运行时所产生的一些临时文件。这些文件是否存在并不影响tomcat的运行,所以这个目录下的内容可以被删除掉。但是:temp文件夹不能删。
6、webapps
这个目录主要是存放需要让tomcat去管理的资源的目录。
7、work
这个目录主要存放的是tomcat对jsp编译完后得原文件以及class文件。
8、doc
存放Tomcat文档;
Server.xml配置文件简介
server:
1、port 指定一个端口,这个端口负责监听关闭tomcat的请求
2、shutdown 指定向端口发送的命令字符串
service:
1、name 指定service的名字
Connector (表示客户端和service之间的连接):
1、port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
2、minProcessors 服务器启动时创建的处理请求的线程数
3、maxProcessors 最大可以创建的处理请求的线程数
4、enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
5、redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
6、acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
7、connectionTimeout 指定超时的时间数(以毫秒为单位)
Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
1、defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context (表示一个web应用程序):
1、docBase 应用程序的路径或者是WAR文件存放的路径
2、path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
3、reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
host (表示一个虚拟主机):
1、name 指定主机名
2、appBase 应用程序基本目录,即存放应用程序的目录
3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Logger (表示日志,调试和错误信息):
1、className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
2、prefix 指定log文件的前缀
3、suffix 指定log文件的后缀
4、timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm (表示存放用户名,密码及role的数据库):
1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息
directory(指定log文件存放的位置):
1、pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多
Tomcat的可视化界面管理
用户配置
在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。
打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。
关于tomcat的部署项目的方式:
1、静态部署
tomcat部署项目三种方式:
1.1 放到webapps目录下。直接将web项目文件件拷贝到webapps 目录中Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将web项目打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse等。也可以用 cmd 命令:jar -cvf mywar.war myweb
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
1
2
3
|
<Host name= "localhost" appBase= "webapps" unpackWARs= "true" autoDeploy= "true" xmlValidation= "false" xmlNamespaceAware= "false" > |
将appBase修改即可。
1.2 修改server.xm 的host节点。添加<Context path="/访问资源目录" docBase="e:/xxx"/>
在server.xml中指定。在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个web应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。
在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
1
2
3
4
5
6
|
<Context path= "/hello" docBase= "D:\ workspace\hello\WebRoot" debug= "0" privileged= "true" > </Context> 或者 <Context path= "/myapp" reloadable= "true" docBase= "D:\myapp" workDir= "D:\myapp\work" /> 或者 <Context path= "/sms4" docBase= "D:\workspace\sms4\WebRoot" /> |
说明:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking 和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
1.3 在conf目录下找到或者是新建文件夹(Catalina---->localhost----->访问资源的 xml-----><Context....../>) 在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(hello.xml),该xml文件的内容为:
1
2
|
<Context path= "/hello" docBase= "E:\workspace\hello\WebRoot" debug= "0" privileged= "true" > </Context> |
2、动态部署也称之为热部署
2.1 登陆tomcat管理控制台:http://localhost:8080/ ,输入用户名和密码后便可管理应用并动态发布。
在Context Path(option):中输入/yourwebname ,这代表你的应用的访问地址。
XML Configration file URL中要指定一个xml文件,比如我们在F:\下建立一个hmcx.xml文件,内容如下: 其中docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在WAR or Directory URL:中键入F:\hmcx即可,然后点击Deploy按钮,上面就可以看到了web应用程序,名字就Context Path(option):中的名字。
2.2 如果部署.war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择.war文件,然后点击Deploy即可。