为什么每次更改servlet的代码时都必须重新启动Tomcat?

时间:2013-05-22 02:54:17

标签: tomcat servlets

使用Tomcat和Eclipse开发Servlet时,我发现在更改Servlet的代码后我必须重新启动Tomcat,否则我将看不到任何已更改的内容。

为什么我必须这样做?

有没有办法在不重启Tomcat的情况下查看更改?

2 个答案:

答案 0 :(得分:4)

您可以配置tomcat以自动重新加载您的servlet,将atribute reloadable配置为上下文的true。

对于do Tomcat 7,你必须这样做。

  1. 编辑CATALINA_HOME / conf / context.xml
  2. 变化:
  3. <Context>
    

    有关:

    <Context reloadable="true">
    

    CATALINA_HOME是您的tomcat安装位置

答案 1 :(得分:1)

您正在编辑的java类被编译为类文件,当Tomcat启动您的应用程序时,这些文件由Tomcat类加载器加载。但是在Tomcat启动应用程序之后,类加载器不会尝试加载类的新版本。

Eclipse确实有一个称为“热代码替换”的简洁功能,但它只在您调试应用程序时才有效。在这种情况下,Eclipse会在您编辑时编译代码(无论是否进行调试),然后Eclipse会尝试加载它编译的新编辑的类。但它仅在调试应用程序时有效。

另一个选择是尝试像JRebel这样的JVM插件,无论你的调试是否调试,都可以热插拔你的类。