修改了类,要不要启动tomcat,好像有时候要重启,而又时候不,大多数的时候都要重新启动才有效果,而重启要花费很长的时间!!!!!搞不清楚怎么回事。有没有人知道原理。(debugger模式也是一样的,好像曾经有人说debuger模式能感受类的变化,而我一直都是把汤姆克特调成的debugger模式呀)

解决方案 »

  1.   

    tomcat中conf\server.xml  项目context配置中添加 reloadable="true"
    如:<Context path="/webdav" docBase="E:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\webdav" debug="0" reloadable="true" crossContext="true"/>
      

  2.   

    tomcat更新了类应该要重新启动才能加载新的类文件。如果把类写在jsp中,一旦jsp发生变化会重新编译jsp页面,不用重启tomcat。
      

  3.   

    你是重启还是重新发布啊?
    多次重新发布可能导致内存不足,多次重启是不会有影响的。
    一般重新发布影响不大,除非你jvm内存设的太小了。
      

  4.   

    试试glassfish,它能修改类而不重启
      

  5.   

    如果你的TOMCAT是在ECLIPSE内部启动的,改动类的方法内部信息不需要重启,如果要访问新加的方法则需要重启.
      

  6.   

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

  7.   

    Tomcat一旦加载了一个类就会缓存这个类,当再次接收到对该类的请求的时候,就总是返回缓存中的副本,因此这个类在文件系统中被修改时没有与JVM一直在运行状态,所以被更改的类不能够被调用。由于Tomcat使用了它自己的类加载器来加载每一个WEB项目美因茨它能够简单的完成类的,只要终止该应用程序,然后用一个新的类加载器重新加载该应用程序即可!
    有两种方法可以在重启tomcat的情况下重新部署类即重载WEB应用:
    1.配置Tomcat的重载reloadable为true,可以动态扫描监视
    2.用Tomcat Manager工具重在应用
    注意,以上两种方式都没有制定类加载器删除缓冲,然后在重载类,但是当他侦测到类改变或交收到重载指令时,就会重载整个应用。
    Tomcat定义了一个类来进行应用的加载,即org.apache.catalina.loader.WebappClassLoader
    你可以找到tomcat的源代码自己查看一下
      

  8.   

    修改 jsp或是 Action 是不需要重启的 ,修改其他一般要重启