【问题标题】:Debug Tomcat Application Startup调试 Tomcat 应用程序启动
【发布时间】:2011-06-09 11:54:02
【问题描述】:

通常情况下,我的 Tomcat 实例启动时没有任何问题。但是,当我向“预览”网络应用程序添加新过滤器时,该应用程序无法启动:

09-Jun-2011 12:23:49 org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
09-Jun-2011 12:23:49 org.apache.catalina.core.StandardContext start
SEVERE: Context [] startup failed due to previous errors
09-Jun-2011 12:23:49 com.polopoly.application.StandardApplication destroy
INFO: Application 'preview' destroy started.

Tomcat 本身可以正常启动 - 其他战争/网络应用程序正常部署和启动。

由于日志中没有堆栈跟踪,我不确定是什么问题。我无法将远程调试器连接到应用程序,因为它不再运行。我可以在应用或过滤器的初始化处放置断点吗?

在 Tomcat 中启动 Web 应用程序期间调试问题的最佳方法/首选方法是什么?

【问题讨论】:

  • init of filter 中可能有一些错误,尚未记录
  • @Jigar - 是的,我就是这么想的,但标准输出中没有出现错误。我应该从哪里开始调试?
  • @timbooo - Tomcat 5.5.33(支持旧环境)。
  • 您使用的是什么 IDE 和服务器插件?在具有默认内置 Tomcat 插件的 Java EE 开发人员的 Eclipse Helios SR1 中,我直接在 Eclipse 控制台中收到了像 SEVERE: Error filterStart 这样的 catalina.out 错误。但是,我记得 IntelliJ 没有这样做。
  • 我也在使用 Eclipse Helios - 但使用的是 Tomcat 的外部实例。

标签: java debugging tomcat servlets


【解决方案1】:

当然可以。只需将所有 tomcat 源代码放入您的 IDE,然后使用

启动 tomcat

catalina jpda 开始

放置适当的断点。例如某处org.apache.catalina.core.StandardContext

如果您仍然无法发现问题,请使用命令行: -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y

suspend=y 在这里很重要。

但我认为问题不在于 tomcat 本身,而在于您的应用程序。所以,从调试它开始。将断点放入所有入口点(servlet、过滤器、侦听器等)。如果不起作用,请执行以下操作。

注释掉 web.xml 中的所有内容。启动应用程序。在职的?美好的!现在取消注释一半的东西。等等。

相信你一定能找到问题所在。祝你好运。

【讨论】:

  • 如果您使用 Eclipse 的 Sysdeo Tomcat 插件,您可以轻松地在 Eclipse 中调试您的 tomcat 应用程序——为每个未捕获的异常设置一个断点,这可能会揭示问题。
  • 没什么,只是Java 5及以上版本的字符串可以是-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y而不是-Xdebug -Xrunjdwp...
猜你喜欢
  • 2016-09-22
  • 2012-05-09
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多