我在本地机器上编写了一个 Java servlet 过滤器,并将其部署为远程(机器)Web 服务器。不幸的是,尝试跟踪我的 JSP/servlet 引擎 Apache Tomcat 5.5 报告的错误非常困难且耗时。我不能一直写 System.out.println(...)、保存、部署、测试 JSP 页面等等。时间太长了 必须有更好、更快的方法。
是否可以远程调试 servlet 过滤器?我的本地机器上没有 Web 服务器,这就是我询问远程调试的原因。具体来说,我正在寻找一种方法来逐行调试 servlet 过滤器,因为它发生在远程 Web 服务器上。这样的方法存在吗?
或者,有没有比写入标准输出更好的方法。它花费的时间太长,我觉得这一定是一种更有效的调试 Java servlet 过滤器的方法。
注意:我使用 Eclipse 进行开发。
非常感谢您的帮助。
更新
谢谢大家的帮助。对此,我真的非常感激。
我将 JVM 参数添加到 Tomcat,重新启动 Tomcat。然后,在装有 Eclipse 的机器上,我在 Debug 配置中输入适当的信息,放入断点并进行测试。不幸的是,它没有用。在配置中,我将其保留为 Socket Attach,单击应用,就是这样。我按下调试按钮,它说连接被拒绝。我尝试了端口 8000 和 8001,但都没有工作。
让我解释一下我正在尝试做的事情,这可能会更好。
我有一个名为 login.jsp 的登录页面。在该页面上,是一个表单,其操作属性为 servlet/LoginServlet。当用户提交表单时,它会调用 servlet/LoginServlet,它映射到 web.xml 文件中的一个类。我们称这个类为 com.mysite.mypkg.classA。在 A 类中,它调用另一个名为 com.custom.mypkg.classB 的类的方法。我想在 B 类中放置一个断点。
因此,在 Eclipse 调试器中使用带有 login.jsp 页面的 url 不会调用它。我尝试使用 servlet/LoginServlet,但也没有用。
我应该为 URL 输入什么?或者,我要调试这种类型的设置吗?
谢谢你。
更新 2
我在这里找到了这个网站,非常全面。我运行 netstat -a 并注意到调试端口未列出。Windows 防火墙已关闭,但可能有其他东西阻塞了端口,谁知道呢。无论如何,我将 VM 参数放在这里,但它不起作用。
谢谢你。