1

如何获取来自已编译 JSP 的堆栈跟踪以包含来自实际 JSP 文件的行号,而不是中间 Servlet java 文件?

我正在使用 Jetty 8。我目前正在以编程方式占用 Jetty 实例。

(如果对行号支持的东西感兴趣,我使用 Eclipse 进行编码,我不太了解 JSR-45 SMAP 逻辑 - 它是“边车”文件,还是此信息放在实际的类文件中?)

将调试,断点工作,重新。JSP?

4

1 回答 1

3

更新:2017 年 6 月

Jetty 9 不再使用 Glassfish JSP。

它使用 Apache Jasper JSP,同样的规则适用如下。

原始答案

Jetty 使用 Glassfish 项目中的 JspServlet 来管理其所有 JSP 处理。

JspServlet 上有 3 个初始化参数(参见${jetty.home}/etc/webdefault.xml内容)可能会有所帮助。

  • “保持生成”(布尔值)真
  • “发展”(布尔值)真
  • “classdebuginfo”(布尔值)真

将所有这些开发时间设置设置为 true,您应该会看到更多信息。以及有中间源文件可以参考。这个生成的源文件包含一行注释掉的 jsp 源代码,然后生成的 java 源文件也可以用来反向引用你的 jsp 的哪一行导致了异常。

另请注意,Glassfish 的 JspServlet 也使用 java.util.logging 作为其底层日志记录基础设施。要查看 JspUsage 的所有细节(包括 jsp 行号),请尝试在 FINEST 级别为“org.apache.jasper”包空间设置 java.util.logging。

于 2012-01-10T15:00:26.110 回答