【问题标题】:Lifecycle, compilation and replacement of JSPsJSP的生命周期、编译和替换
【发布时间】:2011-01-18 14:21:34
【问题描述】:

我很难找到关于这个整体的信息,特别是关于 JSP 代码在 tomcat 中的位置的信息。

我有一个应用程序并为它开发。我远程调试和更改代码。这不会将代码发布到远程机器。因此,我尝试将 JSP 文件复制过来。这并没有改变任何事情,在调试时,我可以看到调试器跳转到不包含代码的行上。

很好。我使用 Lambda Probe 删除工作目录,甚至明确地重新编译所有 JSP,包括我一开始就想更改的那个。我可以查看代码,甚至可以查看已编译的 servlet 代码,所有这些都列出了我的更改。但是,再次运行调试器并尝试调试我更改的代码仍然会跳转到行,就好像我根本没有更改我的代码一样。

这迫使我进行全面部署:我编译了一个完整的 WAR 文件,将其复制到服务器(它被部署),我的程序启动,我需要大约 10 分钟才能达到我之前的状态.

tomcat 将我的 JSP 代码缓存/存放在工作目录旁边的什么地方?是否可以通过调试器“动态”更改代码?我知道只要不更改方法签名,类就可以实现,但我在 JSP 文件中遇到相同的想法时无能为力。

任何帮助都将不胜感激,无论是解释网站的链接还是解释本身。

谢谢。

【问题讨论】:

    标签: jsp tomcat


    【解决方案1】:

    首先你应该自动化你的构建,可能使用 ant。您需要能够快速部署。

    如果原生 tomcat 检测到更改(通常从文件修改日期开始),它将重新加载 JSP。因此,请确保 tomcat 配置不会阻止这种情况发生。看看http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html#Production_Configuration

    要删除已编译的 JSP(从而强制 tomcat 根据请求重新编译 JSP),您可以删除 tomcat/work 下的相应文件夹,例如 tomcat/work/Catalina/www.example.com/_/org,在该文件夹下可以找到已编译的 JSP 和标记文件。

    【讨论】:

    • 谢谢。我已经在使用 Ant 构建 .WAR 文件。我正在上传它们,它们会正常部署。正如我上面已经说过的,我已经删除了工作目录,因为它是 Lambda Probe 的一个功能。但这似乎并没有达到预期的效果。
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2010-10-11
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多