tomcat下的work目录和temp目录

1、 tomcat下的work目录

1    用tomcat作web服务器的时候,部署的程序在webApps下,这些程序都是编译后的程序(发布到tomcat的项目里含的类,会被编译成.class后才发布过来,源文件没有发布过来,但这里的jsp没有经编译的)。tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译(从 work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp页面会被编译成应该是servlet文件,下次再来 访问时,就直接运行servlet类就可以向客户端反应响应页面了,所以有的博客说第一次访问时会比较慢,是因为新发布上去的页面在第一个人访问时,会先 编译成servlet文件,所以慢了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户,所以快),编译后的文件都会存储在work目录下。而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。所以当清空了work目录后,该过程将会从新来过。     
    有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。

2   在tomcat的conf配置文件夹下的server.xml文件里配置了Host name后,就会在conf下的Catalina文件夹和work下的Catalina文件下建立站点名称的文件夹,项目每次发布都会放入来,也会记录到 conf下的Catalina文件夹的配置文件里去。

最近发现,很多网友喜欢把tomcat的work目录里的东西叫做缓存,其实那不是很恰当,work目录只是tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录,这也正是为什么它叫work目录而不是cache目录的原因。 
  jsp,tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。

  tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,很多老前辈都会建议在修改jsp页面后立即清除work目录里的文件。

  另外,tomcat容器中,对转换后的java文件(比如:index_jsp.java)的编译最大只支持64k,所以在其他容器中的jsp移植到tomcat容器中时会遇到大jsp文件会发生无法编译的情况,所以建议把jsp中的业务逻辑写入单独的类,在jsp中通过调用这个类的静态方法来执行,并将jsp页面中的js提取出来放到单独的js文件内。

问题域: 
    如何让Tomcat自动更新class的问题。 
解决方案: 
一、 
在安装的tomcat路径下创建独立配置文件。 
例如: 
创建一文件:D:\Tomcat5.5\conf\Catalina\localhost\testapp.xml

内容为: 
<Context docBase="D:\Tomcat5.5\webapps\testapp" reloadable="true" path="/testapp" workDir="work\Catalina\localhost\testapp"> 
</Context>

重启Tomcat

二、 
直接在tomcat 的配置文件conf/server.xml中添加内容如下: 
<Context docBase="D:\Tomcat5.5\webapps\testapp" reloadable="true" path="/testapp" workDir="work\Catalina\localhost\testapp"> 
</Context> 
注意是在<Engine name="Catalina" defaultHost="localhost">标签下添加; 
重启Tomcat

2、 tomcat下的temp目录

引自:https://blog.csdn.net/u013076997/article/details/52301262

问题背景:业务人员告诉我,登录界面的验证码出不来了,我感觉奇怪啊,怎么一直在运行的项目验证码就出不来了呢?

找原因找了好久,突然想起刚刚删除把tomcat目录下的temp文件给删除了,当时以为没有什么作用,新建了一个temp目录之后,刷新页面就好了。

感觉好奇,temp目录和图形验证码有什么关系呢?原来,temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)但是,千万不能删除该目录,要不然就会带来未知的错误。

文章参考:

https://blog.csdn.net/wugouzi/article/details/12713559

原文地址:https://www.cnblogs.com/java-jun-world2099/articles/10138732.html

原文地址:https://www.cnblogs.com/jpfss/p/10985119.html

时间: 2024-08-01 11:24:36

tomcat下的work目录和temp目录的相关文章

Tomcat下log4j设置文件路径和temp目录

转自:http://www.cnblogs.com/dkblog/archive/2007/07/27/1980873.html 在Web应用中的如何设置日志文件的路径呢?最笨的方法是写绝对路径,但很不方便.而Spring的做法是使用一个Servlet Listener,在WebContainer启动时把ROOT的绝对路径写到系统变量里,这样log4j的配置文件里就可以用$大括号myAppfuse.root大括号 来表示刚刚设进去的系统变量: log4j.appender.logfile.Fil

Java web 项目读取src或者tomcat下class目录下的xml文件或者properties文件

//生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPath()); //直接得到一个输入流: InputStream in = getClass().getClassLoader().getResourceAsStream("test.xml"); //在当前线程获取--这个方法不大稳定 //String path = Thread.curr

【转】MyEclipse开发Web项目发布到Tomcat下的Root目录

通常情况下,Web项目是发布到Tomcat下的webapps文件目录下的 .以至于我们访问的时候: 例如:Web应用项目名称为:webManager,则部署到tomcat后,是部署在tomcat/webapps/webManager中,网址为:http://localhost:8080/webManager. 然而 ,每当我们访问一个网站页面时,地址栏就是:http://www.1234.com/login.html.所以一般我们实际使用是不带webManager(也就是所谓的项目名称)的. 具

MyEclipse 开发 Web项目发布到 Tomcat 下的Root 目录

通常情况下,Web项目是发布到Tomcat下的webapps文件目录下的 . 例如:Web应用项目名称为:stock,则部署到tomcat后,是部署在tomcat/webapps/stock中,网址为:http://localhost:8080/stock. 然而 ,每当我们访问一个网站页面时,地址栏就是:http://www.XXX.com/login.html.所以一般我们实际使用是不带stock(也就是所谓的项目名称)的. 具体操作如下: 选中我们要操作的Web项目,单击右键,选择Prop

JavaWeb学习之tomcat安装与运行、tomcat的目录结构、配置tomcat的管理用户、web项目目录、虚拟目录、虚拟主机(1)

1.tomcat安装与运行双击tomcat目录下的bin/startup.bat,启动之后,输入http://localhost:8080,出现安装成功的提示,表示安装tomcat成功 2.tomcat的目录结构* bin目录:存放tomcat的启动和终止脚本 * startup.bat 启动脚本 * bootstrap.jar,启动脚本最终执行的java程序 * org.apache.catalina.startup.Bootstrap * shutdown.bat 终止脚本 * conf目录

fedora 修改home下的中文目录为英文目录

<h4>修改home下的中文目录为英文目录</h4>习 惯问题,喜欢使用fedora为您在home目录下自创建的“桌面”.“文档”,“图片 .公共的” .“下载”. “音乐”.“ 视频”等目录.时间久了,总感觉有一点痛快,在命令行下操作这些目录下的文件时总要切换输入法,总不是那么酣畅淋漓.要是能把这些中文目录改成英文目录就 好了.有人会说,重命名不是得了.我试过,重命名可以,不过好像有点问题.例如,把“下载”重命名为“Downloads”,浏览器默认的下载目录变了.上网查,才知道一

Linux下查看文件大小和目录大小以及目录下文件的大小

在linux中经常会查看文件大小,通常用的命令du: 该命令详细解释如下: [[email protected] logs]$ du --help 用法:du [选项]... [文件]... 或:du [选项]... --files0-from=F 计算每个文件的磁盘用量,目录则取总用量. 长选项必须使用的参数对于短选项时也是必需使用的. -a, --all             输出所有文件的磁盘用量,不仅仅是目录 --apparent-size   显示表面用量,而并非是磁盘用量:虽然表面

客户端登录提示 :拒绝访问Temp目录解决方法

系统环境搭建好后,在客户端运行,登录提示:拒绝访问Temp目录解决方法,IIS apppool\oaserver没有访问temp目录的权限. 引起原因:因为服务端目录Temp权限不足解决方法:把 C:\Windows\Temp 目录设 为IIS_IUSRS权限即可. 原文地址:http://bbs.delit.cn/thread-729-1-1.html 转载请注明出处: 撰写人:度量科技http://www.delit.cn

Windows7环境下Composer 安装包的Cache目录位置

http://segmentfault.com/a/1190000000355928 https://getcomposer.org/doc/ 要说Composer的用法,以后再说,现在只记录windows7环境下Composer安装包的Cache目录,先看英文 COMPOSER_CACHE_DIR# The COMPOSER_CACHE_DIR var allows you to change the composer cache directory, which is also config