zoukankan      html  css  js  c++  java
  • tomcat9目录结构解析

    tomcat目录结构

     启动

    第一种方式

    进入bin目录

    点击startup.bat

    如果启动出错会一闪而过

    第二种方式

     .catalina.bat run

    启动后,即使产生错误信息,也会在控制台打印出来。比如

    Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    At least one of these environment variable is needed to run this program

    就需要去配一下环境变量。

    config目录

    server.xml

    端口配置

        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    应用目录

      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true">

    第一个主机名,第二个appBase是项目得目录,我们一般把要部署的项目放在webapps下。

    现在尝试改个名字

       <Host name="localhost"  appBase="webappsTest"
                unpackWARs="true" autoDeploy="true">

    把原来得文件夹改成

    webappTest

    重启tomcat,果然还是可以看到那只猫。

    虚拟路径

    为什么要配虚拟路径?

    每次都要把项目放到webapp比较繁琐,且不灵活。

    我们可以把项目放到其他地方,然后做一个映射。

    在server.xml的Host节点配置如下信息

    path是访问路径

    docBase文件夹目录

    <Context path="/hello" docBase="D:	estWeb" debug="0" reloadble="true"/>

    host节点是可以加的

    (需要配一下hosts文件)

    <Host name="www.dayrain.com"  appBase="D:dayrain"
                unpackWARs="true" autoDeploy="true">
            <Context path="/test" docBase="D:dayrain" debug="0" reloadble="true"/>
          </Host>

    默认主机

    还可以设置默认主机

      <Engine name="Catalina" defaultHost="localhost">

    catalina.properties

    类加载

    common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"

    类加载顺序:Bootstrap ---> System ---> /WEB-INF/classes ---> /WEB-INF/lib/*.jar ---> Common

    共用类库

    该配置文件有两行配置

    server.loader=
    shared.loader=

    可以这么设置

    server.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar
         
    shared.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar

    同时需要在tomcat目录下创建 server和shared目录结构并将公用的、应用类放到里面。类加载顺序如下:

    Bootstrap ---> System ---> /WEB-INF/classes ---> /WEB-INF/lib/*.jar ---> Common ---> Server ---> Shared

    忽略扫描的jar包

    tomcat.util.scan.StandardJarScanFilter.jarsToSkip=
    annotations-api.jar,
    ant-junit*.jar,
    ant-launcher.jar,
    ant.jar,
    asm-*.jar,
    aspectj*.jar,
    bootstrap.jar,
    catalina-ant.jar,
    catalina-ha.jar,
    catalina-ssi.jar,
    catalina-storeconfig.jar,
    catalina-tribes.jar,
    catalina.jar,
    cglib-*.jar,
    cobertura-*.jar,
    commons-beanutils*.jar,
    commons-codec*.jar,
    commons-collections*.jar,
    commons-daemon.jar,
    commons-dbcp*.jar,
    commons-digester*.jar,
    commons-fileupload*.jar,
    commons-httpclient*.jar,
    commons-io*.jar,
    commons-lang*.jar,
    commons-logging*.jar,
    commons-math*.jar,
    commons-pool*.jar,
    dom4j-*.jar,
    easymock-*.jar,
    。。。。。。。。

    启动时扫描的jar

    tomcat.util.scan.StandardJarScanFilter.jarsToScan=
    log4j-taglib*.jar,
    log4j-web*.jar,
    log4javascript*.jar,
    slf4j-taglib*.jar

    字符缓存设置

    # String cache configuration.
    tomcat.util.buf.StringCache.byte.enabled=true
    #tomcat.util.buf.StringCache.char.enabled=true
    #tomcat.util.buf.StringCache.trainThreshold=500000
    #tomcat.util.buf.StringCache.cacheSize=5000

    context.xml

    有一句注释如下:

    The contents of this file will be loaded for each web application

    说的是被所有应用共享。此文件运行的时候,只要改变就会被tomcat扫描掉,可以在运行时更改配置。这里还可以配置数据源之之类的。

    web.xml

    这边的web.xml是全局生效的。

    每个web工程下,也会有一个web.xml,这个是每个项目独享的。

    先加载全局项目的web.xml、再加载独立的web.xml

    这个文件夹里改个配置,可以实现比较好玩的功能

    <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>

    把fasle改成true,配合下面的虚拟路径,可以直接影射服务器文件

    lib目录

    jar包

    logs目录

    日志

    catalina.日期.log

    启动日志

    localhost.日期.log

    监听器相关的日志

    localhost_access_log.日期.txt

    请求路径

    catalina.out

    linux上运行时标准输出和标准错误输出会被写到这里

    webapp目录

    发布网站应用的目录,是可修改的。

    work目录

    tomcat的工作目录,是tomcat把jsp转化成servlet的地方

    总结

    1、tomcat启动得时候,一次性读取配置文件,后面不会更改。

    2、tomcat只是对资源的映射处理,不会把资源读进内存,如果运行时删除webapps目录下的文件,将会404。

    3、修改server.xml要重启tomcat才能生效。

     

  • 相关阅读:
    Dynamics CRM
    Cordova
    《linux就该这么学》第二节课,安装红帽7,基础命令至2.3小节的笔记
    《linux就该这么学》开课,linux之路新开始
    《linux就该这么学》找到一本不错的Linux电子书,《Linux就该这么学》。
    mongodb3.4.5用http访问28017端口
    mongodb安装步骤
    linux安装docker
    centos 遇到/dev/mapper/cl-root 100% 解决方法
    本机ping不通虚拟机,但虚拟机可以ping通本机
  • 原文地址:https://www.cnblogs.com/phdeblog/p/14049248.html
Copyright © 2011-2022 走看看