【问题标题】:Reloading JSTL Tag files in Tomcat development modeTomcat开发模式下重新加载JSTL Tag文件
【发布时间】:2010-07-23 15:35:49
【问题描述】:

我刚刚继承的应用程序定义了.tag 文件——即用JSP 和其他JSTL 标记编写的JSTL 标记。 Tomcat 是否可以像 JSP 的“开发”模式一样,在不重新启动的情况下获取对 .tag 文件的更改并重新编译/重新加载它们?

编辑 我应该注意到上下文在 Tomcat 中被标记为“可重新加载”,并且我成功地热部署了类文件和 jsps。它只是没有处理 .tag 文件。

【问题讨论】:

    标签: jsp tomcat jstl


    【解决方案1】:

    JSP 的“开发”模式也适用于标记文件...除非标记文件被打包在 jar 文件中(例如,在 /WEB-INF/lib 中的 jar 文件的 /META-INF/tags/ 中)。

    如果标签文件像 JSP 一样部署(例如,在 /WEB-INF/tags/ 中),如果“开发”模式为 true,则每次访问时都会检查它们的修改并重新加载。您不必显式设置它,因为它在 tomcat 5.5/6 中默认为真。

    如果您检查 $CATALINA_BASE/conf/web.xml 并且“开发”未明确设置为 false,但您仍然遇到重新加载 .tag 文件的问题(假设这些文件不是 jar 打包的),您可以尝试关闭标签池(对于 jasper,JspServlet):

    <init-param>
        <param-name>enablePooling</param-name>
        <param-value>false</param-value>
    </init-param>
    

    ...但这确实没有必要。

    【讨论】:

    • 谢谢。我相信这一直有效,而且我被所有地方的 Cygwin 中的某种缓存所困扰:(
    • "...除非标签文件被打包在一个 jar 文件中(例如在 /WEB-INF/lib 中的一个 jar 文件的 /META-INF/tags/ 中)"。这个答案是 10 岁。现在有办法克服这个限制吗?例如,可以想象解压缩 JAR 文件以允许热重新加载?
    【解决方案2】:

    类路径中的库/文件不会在 Tomcat 中热部署/热加载。据我所知,Glassfish v3 是唯一能做到这一点的人。 Tomcat 只能热部署 JSP 文件和 Java 源文件中的更改。然而,由于 Tomcat 是一个非常快速的(重新)启动程序(在不到 3 秒的时间内完成,而 Glassfish 大约需要 30 秒),手动重新启动应该不是一个主要问题,是吗?热部署本身已经花费了大约相同的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多