我有一些J2EE应用程序,并且我能够在它的web界面中看到该应用程序正在做什么。我也有应用程序的源代码。我想知道当我点击网页界面时,实际执行的代码是什么。
找出这个的最好方法是什么?我正在考虑将断点放在每个方法的第一行,但是手动执行非常烦人:-),所以我希望这是一些更好的方法。
谢谢你的回答。
您的应用程序部署在应用程序服务器上。可以通过在调试模式下启动服务器来调试它。例如,JBoss为eclipse提供了一个很好的工具套件。有了这些工具,调试只需按一下按钮(有bug的那个)。
日志记录当然也是一个选项,尽管你不会得到太多的细节。就我个人而言,我更喜欢logback而不是commons,原因有很多。
如果您不知道在哪里设置断点/在哪里记录日志,并且包结构没有帮助,那么您可以从ejb中的方法开始。例如,寻找像@Stateless
, @EJB
这样的注释(找到注入点并从那里开始)。
如果有servlet类,从那里开始,或者如果它是JSF前端,寻找@ManagedBean
注释。
在api中添加日志消息是了解控制流的最佳方法(也是历史上最强大的调试机制之一)。
如果您愿意,您可以将它们中的大多数设置为DEBUG
级别,以便从开发环境切换到类似生产环境(您很可能不需要它)。
我认为apache logger是跟踪流程的好方法。因为都是我自己写的。Eclipse提供了一个日志查看器插件,您可以通过它查看日志。然而,当涉及到web应用程序时,我认为监控也是至关重要的。使用jconsole,你可以查看正在执行的线程。使用jmap你可以找到类和对象加载…我不知道输出是否按照它们加载的顺序。如果是这样……然后你可以很好地了解类是如何加载的。以及它们各自消耗的实例。
如何添加一个Servlet过滤器,只传递一切通过链,并把你的断点在那里?
确保在你的web.xml中有适当的过滤器映射,并且你的断点应该在所有匹配URL的方式中
添加一个日志记录器。你也可以使用日志库,例如Apache Commons Logging.