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

时间:2022-05-12 02:22:09

Tomcat整体目录:

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

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

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--各个目录详解(二)

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

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

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

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

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

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

② server.xml:

 <?xml version="1.0" encoding="UTF-8"?>

   <!-- Server代表一个 Tomcat 实例。可以包含一个或多个 Services,其中每个Service都有自己的Engines和Connectors。
port="8005"指定一个端口,这个端口负责监听关闭tomcat的请求
-->
<Server port="8005" shutdown="SHUTDOWN">
<!-- 监听器 -->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- 全局命名资源,定义了UserDatabase的一个JNDI(java命名和目录接口),通过pathname的文件得到一个用户授权的内存数据库 -->
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- Service它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素 -->
<Service name="Catalina">
<!--
每个Service可以有一个或多个连接器<Connector>元素,
第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定
义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- 每个Service只能有一个<Engine>元素 -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- 默认host配置,有几个域名就配置几个Host,但是这种只能是同一个端口号 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
  <!-- Tomcat的访问日志,默认可以关闭掉它,它会在logs文件里生成localhost_access_log的访问日志 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="www.hzg.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/myweb1" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="hzg_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

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

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

 <?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="manager" password="manager" roles="manager-gui"/>
</tomcat-users>

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

  存放Tomcat运行需要的库文件

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

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

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里配置)

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

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,可以达到清除缓存的作用。

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

-------------------------------------------------------------------------------------------------------------------------

Tomcat--安装与部署(一)

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

Tomcat--各个目录详解(二)的更多相关文章

  1. Linux下tomcat的安装详解

    Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...

  2. Tomcat的配置文件详解

    Tomcat的配置文件详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Tomcat的配置文件 Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中, ...

  3. tomcat常用配置详解和优化方法

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  4. tomcat的配置详解:&lbrack;1&rsqb;tomcat绑定域名

    转自:http://jingyan.baidu.com/article/7e440953dc096e2fc0e2ef1a.html tomcat的配置详解:[1]tomcat绑定域名分步阅读 在jav ...

  5. logback -- 配置详解 -- 二 -- &lt&semi;appender&gt&semi;

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  6. Linux &sol;proc目录详解

    Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...

  7. jdk目录详解及其使用方法

    jdk目录详解 jdk目录详解 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境.它由一个处于操作系统层之上的 ...

  8. 解析Tomcat之HttpServlet详解

    解析Tomcat之HttpServlet详解 Servlet的框架是 由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所 ...

  9. Linux dts 设备树详解&lpar;二&rpar; 动手编写设备树dts

    Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 前言 硬件结构 设备树dts文件 前言 在简单了解概念之后,我们可以开始尝试写一个 ...

随机推荐

  1. World Wind &period;NET源码编译问题处理

    World  Wind  .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...

  2. Java控制台中输入中文输出乱码的解决办法

    Run---Run Configurations---Common---Encoding---Other---GBK Run Configurations里的Common中将编码方式改成GBK就正常了

  3. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat

    大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 方法/步骤 首先 ...

  4. DNS Prefetch

    DNS 实现域名到IP的映射.通过域名访问站点,每次请求都要做DNS解析.目前每次DNS解析,通常在200ms以下.针对DNS解析耗时问题,一些浏览器通过DNS Prefetch 来提高访问的流畅性. ...

  5. UVA10561 Treblecross 组合游戏&sol;SG定理

    Treblecross is a two player gamewhere the goal is to get three X in a row on a one-dimensional board ...

  6. MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是 ...

  7. mysql如何选择合适的数据类型1:CHAR与VARCHAR

    CHAR和VARCHAR类型类似,都用来存储字符串,但它们"保存"和"检索"的方式不同.CHAR属于"固定长度"的字符串,而VARCHAR属 ...

  8. 自己动手写Redis客户端(C&num;实现)3 - GET请求和批量回复

    实现代码(C#) 1.发送GET指令 string keyGet = "SetKeyTest"; // 设置 的key StringBuilder sbSendGet = new ...

  9. Day041--CSS&comma; 盒模型&comma; 浮动

    内容回顾 表单标签 input type text 普通的文本 password 密码 radio 单选  默认选中添加checked 互斥的效果 给radio标签添加 相同的name checkbo ...

  10. 关于html引用php文件在编译器正常运行,web浏览器出问题的一点心得

    首先上图 第一张图是预期效果,也就是编译器运行的效果,第二张则是在浏览器打开的效果.那么为甚么会出现这何种问题呢? 原来:编译器能正常运行 是因为是走的cli模式,而浏览器现在走的是web模式,php ...