【问题标题】:how to enable hot deploy in tomcat如何在tomcat中启用热部署
【发布时间】:2015-12-04 05:05:48
【问题描述】:

我可以编写一个 ant 脚本,将更新的类文件复制到 tomcat 中的web-inf\classes。但是如何让 Tomcat 7.0 自动从 web-inf/classes 目录中获取更改的类文件?

我尝试在 tomcat 主机配置server.xml 中设置autoDeploy="true",但是当检测到更改时,Tomcat 会话被破坏。 我可以在 Intellij 中轻松替换 eclipse tomcat plugin

【问题讨论】:

标签: tomcat jakarta-ee intellij-idea tomcat7


【解决方案1】:

我最终使用了HotSwapAgent tool。这是 JRebel 的免费替代品

【讨论】:

    【解决方案2】:

    Tomcat 只能热插拔某些类型的文件如JSP,以及静态文件如JavaScript、CSS 等。如果你turn off cacheing 但不能热插拔Java 类,只能重启webapp。为了实现Java类的热插拔,我到处都看到过JRebel的广告,但还没有尝试过他们的产品。

    但是,您可以通过注释掉 Tomcat 文档站点中解释的指令来保留 Tomcat 会话:http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Disable_Session_Persistence

    最后,您可以编写 ANT 脚本来组装 WAR 并在每次执行脚本时重新部署。

    示例 build.xml:

    ...
    <target name="tomcat-stop">
        <exec executable="${server.home}/bin/catalina.bat">
            <arg value="stop"/>
        </exec>
    </target>
    
    <target name="tomcat-start">
        <exec executable="${server.home}/bin/startup.bat">
            <arg value="start"/>
        </exec>
    </target>
    ...
    <target name="all" depends="tomcat-stop,clean,init,compile,junit-slow,make_war,deploy,tomcat-start"></target>
    

    在任何合并中,出于两个原因,我会避免使用 Eclipse Tomcat 插件。

    1. 在大多数版本的 Eclipse 中,已将 Tomcat 作为服务器适配器并附带了一些选项。
    2. 使用插件防止 IDE 膨胀。

    【讨论】:

    • 谢谢,我有一个类似的脚本。我想知道它是如何在 eclipse 中使用 eclipse tomcat 插件完成的。它支持在tomcat中进行热部署而不会破坏会话
    • Eclipse 允许您免费在 tomcat 中进行热交换,而不是 JRebel。我想知道它是怎么做到的,因为我想在 Intellij 中做同样的事情
    【解决方案3】:

    有一个新的 intellij 插件支持它:https://plugins.jetbrains.com/plugin/9492-smart-tomcat

    【讨论】:

    • 智能tomcat插件如何开启热部署?我在提到的网址中找不到解决方案。
    【解决方案4】:

    显然另一种选择是使用jetty(例如,在进行开发时)它能够更轻松地进行即时热插拔。

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多