【问题标题】:Why I have to restart Tomcat every time I change the code for my servlet?为什么每次更改 servlet 的代码时都必须重新启动 Tomcat?
【发布时间】:2013-05-22 02:54:16
【问题描述】:

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

为什么我必须这样做?

有没有办法在不重启 Tomcat 的情况下看到变化?

【问题讨论】:

标签: tomcat servlets


【解决方案1】:

您可以配置 tomcat 自动重新加载您的 servlet,将 Context 的 reloadable 属性配置为 true。

对于 Tomcat 7 你必须这样做。

  1. 编辑 CATALINA_HOME/conf/context.xml
  2. 更改:
<Context>

为:

<Context reloadable="true">

CATALINA_HOME 是你的 tomcat 安装位置

【讨论】:

    【解决方案2】:

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

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

    另一种选择是尝试像 JRebel 这样的 JVM 插件,它可以热交换你的类,无论你是否调试。

    【讨论】:

    • “热代码替换”实际上称为 HotSwap,在所有 IDE 中都可用。
    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多