• 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.5confCatalinalocalhost estapp.xml 

    内容为: 
    <Context docBase="D:Tomcat5.5webapps estapp" reloadable="true" path="/testapp" workDir="workCatalinalocalhost estapp"> 
    </Context> 

    重启Tomcat 

    二、 
    直接在tomcat 的配置文件conf/server.xml中添加内容如下: 
    <Context docBase="D:Tomcat5.5webapps estapp" reloadable="true" path="/testapp" workDir="workCatalinalocalhost estapp"> 
    </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
  • 相关阅读:
    easyui-numberbox后台获取数据后,鼠标一点击就自动清空了
    easyui只显示年月,时间格式
    解决ASP.Net第一次访问慢的处理 IIS 7.5
    解决ASP.Net第一次访问慢的处理(IIS8)
    在SQL2005中修改数据库名称
    HTML代码中<%%>、<%=%>
    c#中virtual, abstract和override的区别和用法
    Eclipse导入工程Some projects cannot be imported because they already exist in the workspace
    mvn package
    ipod导入音乐
  • 原文地址:https://www.cnblogs.com/jpfss/p/10985119.html
Copyright © 2020-2023  润新知