环境:
jdk1.8;tomcat8.0.53
摘要说明:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
本篇文章主要讲解tomcat主要目录结构及各结构下的文件的作用;最后讲述下tomcat部署的三种方式。
步骤:
1.下载解压tomcat及各目录介绍
首先我们在tomcat官网选择下载tomcat8.0的最新版本:
http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.zip
解压我们可以看到目录:
各个目录的主要作用如下:
bin:执行目录;其下.bat文件用于window系统、.sh用于liunx系统
conf:配置目录;其下包含服务器核心配置server.xml;根配置web.xml,权限配置catalina.policy等
lib:依赖目录;其下主要包括tomcat默认依赖的jar包
logs: 日志目录:其下主要包括日常acess日志及calatina输出日志
webapps:tomcat部署目录;其下有tomcat默认部署项目且此目录也是隐式部署目录
temp:临时目录;temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)
work:编译缓存目录;work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。 清空work目录,然后重启tomcat,可以达到清除缓存的作用。
2.bin(执行目录)
bin下常用的命令有startup.xx和shurdown.xx;分别负责tomcat的启动和关闭;
若一个服务器部署多个tomcat需要先在/etc/profile中注册多个calatina_home:
export CATALINA_BASE_jcfw=/usr/local/jcfw/jcfw
export CATALINA_HOME_jcfw=/usr/local/jcfw/jcfw
export TOMCAT_BASE_jcfw=/usr/local/jcfw/jcfw
此时需要在startup.xx和shutdown.xx上指定calatina_home:
export CATALINA_HOME=$CATALINA_HOME_jcfw
export CATALINA_BASE=$CATALINA_BASE_jcfw
此外还经常通过修改calatina.xx来配置tomcat运行内存,如liunx下通过修改calatina.sh来修改运行内存:
JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
3.conf(配置目录)
配置目录下我们首先看核心配置文件server.xml:该配置主要节点:Server节点->Service ->Executor(线程池)、Connector连接器
#一个服务器多台tomcat需修改此处端口
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
#默认不打开,Executor (线程池)maxThreads不设置的话一般是默认200
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
#一个服务器多台tomcat需修改此处端口
#用线程池的话,connector里面的maxThreads是无效的。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
#一个服务器多台tomcat需修改此处端口
#AJP协议主要用于apache集群,无用可注释
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
</Service>
</Server>
若不开启线程池,连接器可配置如下:
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URLEncoding="utf-8"
maxThreads="2000" maxSpareThreads="2000" minSpareThreads="200"
minProcessors="200" acceptCount="2000" maxProcessors="2000" maxPostSize="0"/>
根配置web.xml下主要配置的是通用servlet和tomcat能处理的请求类型:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
#DefaultServlet默认的,加载静态文件html,js,jpg等静态文件。
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
#JspServlet专门处理jsp。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
#配置session默认时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
#mime-mapping 文件类型,其实就是Tomcat处理的文件类型和请求类型。
<mime-mapping>
<extension>123</extension>
<mime-type>application/vnd.lotus-1-2-3</mime-type>
</mime-mapping>
.....
<mime-mapping>
<extension>zmm</extension>
<mime-type>application/vnd.handheld-entertainment+xml</mime-type>
</mime-mapping>
#配置默认首页
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
context.xml主要指定系统配置;如可指定jndi数据源:
<Resource name="xxx" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx"
username="xxx" password="xxx" maxActive="50"
maxIdle="30" maxWait="10000" />
catalina.policy指的是tomcat获取jvm权限配置,其他配置文件一般保持配置即可
4.lib(依赖目录)
lib目录下本身就有tomcat默认依赖的jar包;当然我们也可以将项目的依赖jar包放在此处,减少war大小;
5.logs(日志目录)
logs目录下主要有:
calatina.xx:控制台输出日志;
localhost_access_log.xx:访问日志
6.webapps(发布目录)
主要用来做隐式发布,其目录下已有tomcat默认的项目;
小技巧:修改tomcat默认小图标替换webapps\ROOT\favicon.ico;修改默认首页及替换webapps\ROOT\index.jsp(html删除替换即可)
7.发布
隐式部署:即将war包或jar包直接上传到webapps目录下
显示部署:
1.server.xml中的Host加入一个Context(指定路径和文件地址)
<Host appBase="webapps" autoDeploy="true" name="localhost"unpackWARs="true">
<Context path="/Demo1" docBase="d:/Demo1" reloadable="true"></Context>
</Host>
2.在conf/Catalina/localhost中创建xml文件(热部署),访问路径为文件名;如demo1.xml:
<?xml version="1.0"encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>