Tomcat总结

Tomcat文件结构(6.x及以后

bin目录

该目录下存放的是二进制可执行文件。有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;

conf目录

server.xml配置整个服务器信息。例如修改端口号,添加虚拟主机等

catalina.properties:指定tomcatd的类加载器

tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面.

web.xml部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。MIME就是用来说明文档的内容是什么类型的.

context.xml对所有应用的统一配置,通常我们不会去配置它

lib目录:

Tomcat的类库,里面是一大堆jar文件。可以被tomcat和所有的web应用程序共用。

logs目录

这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。

temp目录:

存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!

webApps目录:

存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。

work目录:

运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

Tomcat的类加载机制

Tomcat5.x之前可以说是tomcat的正统类加载,在tomcat6.x之后将/common /server /shared合并到同一个目录,即lib目录。

在/common目录:类库可以被Tomcat和所有的Web程序共同使用

对应CommomClassLoader

在/server目录:类库可以被Tomcat使用,对所有的Web程序都不可见

对应CatalinaClassLoader

在/shared目录:类库可以被所有的Web程序共用,Tomcat不可用

对应SharedClassLoader

在/WebApp/WEB-INF目录:只对当前Web应用程序可用,Tomcat和其他程序不可用

对应WebAppClassLoader

 

对于Tomcat6.x以后的版本,只有指定了tomcat/conf/catalina.properties配置文件的server.loader和share.loader才会真正建立CatalinaClassLoader和SharedClassLoader的实例,否则用到这两个类加载器的地方全都用CommonClassLoader实例代替。

Tomcat的热部署

JsperLoader的加载范围仅仅是这个Jsp文件所编译出来的那个Class,他出现的目的就是为了被丢弃,当服务器检测到Jsp文件被修改时会替换掉原来的JsperLoader实例,并再建立一个新的Jsp类加载器实现HotSwap.(热部署)

Java文件也可以实现热部署:

修改server.xml文件

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

<!-- docBase指向工程目录  path即Context名称 -->

<Context docBase="E:/code/workspace/SCM/WebRoot" path="/SCM" reloadable="false"> </Context>

</Host>

时间: 2024-12-11 16:32:12

Tomcat总结的相关文章

解决myeclipse中tomcat启动报错A configuration error occurred during startup. Please verify the preference field whit the prompt:Cannot connect to VM

原因一:可能是tomcat里面文件不小心被删除了.尝试更换tomcat, 解决步骤:重新下载tomcat并解压.点击windows——> preferences——>tomcat重新配置. 原因二:myeclipse系统自带jdk出问题 解决步骤:重新下载tomcat并解压.点击windows——> preferences——>tomcat——>jdk,配置成你自己的jdk 原因三:由于软件冲突导致的错误 解决步骤: 找到myeclipse.ini文件 加上-Djava.ne

eclipse部署tomcat修改项目访问路径(虚拟路径)

原文参考: http://www.educity.cn/wenda/147993.html http://blog.163.com/java_zf/blog/static/19926038420129240314546/ tomcat部署web项目(eclipse自动部署项目到tomcat,访问URL中不包含部署名) 最近项目中需要把项目部署到tomcat中,并且访问路径中不包含不署名,且想实现Eclipse中的自动部署,扒了好久资料,最终实现了自己的需求,呵呵,如下: 1. 把项目contex

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

Tomcat配置远程调试端口(windows、Linux)

当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081" // Windows系统:

windows10上使用一个tomcat部署2个项目

前言:目前想在本机部署2个项目,网上查了之后,写下本篇随笔 1.准备工作 2.操作方法 3.运行2个项目 1.准备工作 2个war包(一个jprss.war和一个jenkins.war) 1个tomcat环境 2.操作方法 第一步:复制tomcat中的webapps文件夹,命名为webapps1和webapps2 第二步:复制tomcat\conf\Catalina文件夹,命名为Catalina1和Catalina2 第三步:修改tomcat中的server.xml文件: 将从<Service

Tomcat JDBC Pool使用说明

Maven依赖 <dependency>   <groupId>org.apache.tomcat</groupId>   <artifactId>tomcat-jdbc</artifactId>   <version>8.5.9</version> </dependency> 最新版本为9.0,推荐使用8.5.9稳定版 常用配置 连接池配置项很多,下面只列出了推荐配置,项目组可根据自身情况进行增减 <b

tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程

最近两天在整理关于flume的总结文档,没有启动过tomcat.昨天晚上部署启动,发现报了如题的错误,全文如下: 严重: The web application [/oa-deploy] registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a mem

eclipse中配置的tomcat 启动正常 但是访问报404错误

问题描述: 在eclipse中配置的Tomcat,启动是正常的,控制台显示启动成功,也没有报任何错误信息,但是访问的时候就报404错误,然后直接在bin目录下启动startup.bat的方式就是正常的.然后就很纳闷,之后在网上搜了下资料,说是Eclipse的配置出了问题. 解决方案: 1.如果Server里的tomcat启动了,需要先停掉.然后再移除添加的项目 2.之后双击server中配置的tomcat服务器,会弹出如下界面. 3.在Server Locations配置中选择第二个选项,use

SpringBoot tomcat

该文的前提是已经可以在控制台运行成功,有些时候想放在tomcat里运行 大致分为如下几步 1.配置文件更改 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- <artifactId>spring-boot-starter</artifactId>-

cmd启动和停止tomcat

首先进入Tomcat安装目录下的bin目录 一. cmd命令启动Tomcat服务器: start.bat 补充:若这样启动了Tomcat服务器,此时再去eclipse里面在该服务器上运行javaweb项目,会报错(端口在使用,因为在eclipse上运行项目的时候会再次启动服务器),因此需要先关闭服务器后再去启动eclipse项目上的tomcat服务器 二.cmd命令停止Tomcat服务器: shutdown.bat