如何强制 Jetty 在每次修改时重新编译 JSP



我想将更改部署到 Jetty 并能够在下一个请求中看到新结果,而无需使用所有 Web 应用程序重新启动 Jetty。

在官方的JSP配置文档中,它是描述的:

如果 development=true,则对每个请求进行重新编译检查。

这是我的 Web 应用程序web.xml中的 JSP 配置

<servlet id="jsp">
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>modificationTestInterval</param-name>
        <param-value>1</param-value>
    </init-param>
    <init-param>
        <param-name>checkInterval</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>reload-interval</param-name>
        <param-value>-1</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.7</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.7</param-value>
    </init-param>
</servlet>

不幸的是,这对我不起作用。那么怎么了呢?

Linux, jetty-distribution-9.1.5.v20140505 (Zimbra 8.6.0_GA_1153)

既然你正在开发Zimbra,你可能想看看LibreZimbra(librezimbra.github.io)项目——Zimbra OSE的一个分支,因为Synacor甚至不关心15年前反复出现的错误。

我偶然发现了你的帖子,因为我只需要添加一些额外的调试代码来登录.jsp,以便追踪 NullPointerException 的原因 - 并且有同样的问题强制 jsp 类重建。

提示:如果您在日志中得到神秘的 500 没有任何内容,请编辑 jetty.xml.in(需要完全重新启动,因此 zmconfigd 重建 jetty.xml),查找错误处理程序 - 启用堆栈跟踪输出并注释掉自定义错误页面。然后,您将在 HTTP 回复(浏览器)中获得完整的异常堆栈跟踪。

最新更新