• Tomcat--各个目录详解(二)


    [转载]原文地址:https://www.cnblogs.com/hzg110/p/6851523.html

    Tomcat--各个目录详解(二)

    Tomcat整体目录:

    一、bin文件(存放启动和关闭tomcat脚本)

    其中.bat和.sh文件很多都是成对出现的,作用是一样的,一个是Windows的,一个是Linux。

    ① startup文件:主要是检查catalina.bat/sh 执行所需环境,并调用catalina.bat 批处理文件。启动tomcat。

      异常:打开可能有闪退的问题。原因可能有以下两点:

        1)缺少环境变量配置,startup会检查你的电脑环境变量是否有JAVA_HOME。

        2)已经开启了Tomcat容器,再次开启端口号会被占用。

          java.net.BindException: Address already in use: JVM_Bind

    ② catalina文件:真正启动Tomcat文件,可以在里面设置jvm参数。

      异常:可能出现内存溢出错误可以考虑修改它

        1)java.lang.OutOfMemoryError: Java heap space

          Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,从而导致客户端显示500错误。

            Windows环境下修改catalina.bat文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m 

          Linux环境下修改catalina.sh文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’ 

          其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。 

        2) java.lang.OutOfMemoryError: PermGen space

          PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM

          存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的

          Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用

          中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的

          时候。如果你的WEB APP下用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了

         解决方法:

          在catalina.bat的第一行增加:(Windows)
          set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
          XX:MaxPermSize=256m
          在catalina.sh的第一行增加:(Linux)
          JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
          XX:MaxPermSize=256m

    ③ shutdown文件:关闭Tomcat

    ④ Tomcat8文件:相当于控制台直接输入startup

    ④ Tomcat8w文件:图像化控制Tomcat

      

    如果想启动Tomcat,就点击Start。终止就点击Stop。

      异常:点击Tomcat8和Tomcat8w的时候出现错误

      解决:在命令行执行 service.bat install(必须在bin文件目录下执行),再点击就OK了。

    二、conf文件(存放tomcat的配置文件)

    ① Catalina文件:用于存储自定义部署Web应用的路径(上一节详细阐述到了,如何部署)

    ② server.xml:

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2   
     3   <!-- Server代表一个 Tomcat 实例。可以包含一个或多个 Services,其中每个Service都有自己的Engines和Connectors。
     4        port="8005"指定一个端口,这个端口负责监听关闭tomcat的请求
     5   -->
     6   <Server port="8005" shutdown="SHUTDOWN">
     7     <!-- 监听器 -->
     8     <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
     9     <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    10    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    11    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    12    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
    13    <!-- 全局命名资源,定义了UserDatabase的一个JNDI(java命名和目录接口),通过pathname的文件得到一个用户授权的内存数据库 -->
    14    <GlobalNamingResources>
    15      <Resource name="UserDatabase" auth="Container"
    16                type="org.apache.catalina.UserDatabase"
    17                description="User database that can be updated and saved"
    18                factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    19                pathname="conf/tomcat-users.xml" />
    20    </GlobalNamingResources>
    21    <!-- Service它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素 -->
    22    <Service name="Catalina">
    23      <!-- 
    24          每个Service可以有一个或多个连接器<Connector>元素,
    25          第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定
    26          义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.
    27      -->
    28      <Connector port="8080" protocol="HTTP/1.1"
    29                 connectionTimeout="20000"
    30                 redirectPort="8443" />
    31      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    32      <!-- 每个Service只能有一个<Engine>元素 -->
    33      <Engine name="Catalina" defaultHost="localhost">
    34        <Realm className="org.apache.catalina.realm.LockOutRealm">
    35          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    36                 resourceName="UserDatabase"/>
    37        </Realm>
    38        <!-- 默认host配置,有几个域名就配置几个Host,但是这种只能是同一个端口号 -->
    39        <Host name="localhost"  appBase="webapps"
    40              unpackWARs="true" autoDeploy="true">
    41        <!-- Tomcat的访问日志,默认可以关闭掉它,它会在logs文件里生成localhost_access_log的访问日志 -->
    42          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    43                 prefix="localhost_access_log" suffix=".txt"
    44                 pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    45        </Host>
    46        <Host name="www.hzg.com"  appBase="webapps"
    47              unpackWARs="true" autoDeploy="true">
    48          <Context path="" docBase="/myweb1" />
    49          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    50                 prefix="hzg_access_log" suffix=".txt"
    51                 pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    52        </Host>
    53      </Engine>
    54    </Service>
    55  </Server>
    复制代码

    访问http://localhost:8080/aaahttp://www.hzg.com/8080/aaa效果一致。

     tomcat-users.xml:配置Tomcat的server的manager信息

    复制代码
    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <tomcat-users xmlns="http://tomcat.apache.org/xml"
    3               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4               xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
    5               version="1.0">
    6 <role rolename="manager-gui"/>
    7 <user username="manager" password="manager" roles="manager-gui"/>
    8 </tomcat-users>
    复制代码

    三、lib文件(存放Tomcat运行需要的库文件)

      存放Tomcat运行需要的库文件

    四、logs文件(存放Tomcat执行时的LOG文件)

      

    1、catalina.日期.log:控制台日志

    2、commons-daemon.日期.log:启动、重启和停止对Tomcat的操作日志

    3、host-manager.日期.log:Tomcat管理页面中的host-manager的操作日志

    4、localhost.日期.log:Web应用的内部程序日志

    5、localhost_access_log.日期:用户请求Tomcat的访问日志(这个文件在conf/server.xml里配置)

    6、manager.日期.log:Tomcat管理页面中的manager app的操作日志。

    五、temp文件(存放Tomcat执行时的临时文件)

      temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

    六、webapps文件(存放Tomcat的应用文件)

      webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。

      当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。

    七、work文件(存放Tomcat运行时产生的class文件)

      work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。清空work目录,然后重启tomcat,可以达到清除缓存的作用。

      

  • 相关阅读:
    增强学习--值迭代
    makefile opencv的案例
    shiro拦截器处理链执行顺序
    HTTP头字段总结
    IntelliJ IDEA上创建Maven Spring MVC项目
    使用deploy命令发布jar到私服仓库nexus
    JAVA设计模式之单例模式
    java基础-I/O系统
    HTTP深入浅出 http请求
    HTTP Header 详解
  • 原文地址:https://www.cnblogs.com/grasslucky/p/10613290.html
Copyright © 2020-2023  润新知