服务搭建应用之Tomcat系列1.1Tomcat结构解析

环境:

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>

 

没有更多推荐了,返回首页