gpt4 book ai didi

java - 如何从远程机器上即时调试 Java servlet 过滤器(我使用的是 Eclipse 和 Apache Tomcat 5.5)

转载 作者:行者123 更新时间:2023-11-30 06:27:55 25 4
gpt4 key购买 nike

我在本地机器上编写了一个 Java servlet 过滤器,并将其部署到远程(机器)网络服务器上。不幸的是,尝试跟踪 Apache Tomcat 5.5(我的 JSP/servlet 引擎)报告的错误非常困难且耗时。我无法继续编写 System.out.println(...)、保存、部署、测试 JSP 页面等等。时间太长了。必须有更好、更快的方法。

是否可以远程调试 servlet 过滤器?我的本地计算机上没有 Web 服务器,这就是我询问远程调试的原因。具体来说,我正在寻找一种方法来逐行实时调试 servlet 过滤器,就像它在远程 Web 服务器上发生的那样。有这种方法吗?

或者,有没有比写入标准输出更好的方法。花费的时间太长了,我觉得这一定是一种更有效的调试 Java servlet 过滤器的方法。

注意:我正在使用 Eclipse 进行开发。

非常感谢您的帮助。

更新

谢谢大家的帮助。我真的很感激。

我将 JVM 参数添加到 Tomcat,重新启动了 Tomcat。然后,在装有 Eclipse 的机器上,我在调试配置中输入了适当的信息,放入断点并进行了测试。不幸的是,它没有用。在配置中,我将其保留为 Socket Attach,单击应用,仅此而已。我按下调试按钮,它说连接被拒绝。我尝试了端口 8000 和 8001,但都不起作用。

让我解释一下我正在尝试做的事情,这可能会更好。

我有一个名为 login.jsp 的登录页面。在该页面上,是一个表单,其 action 属性为 servlet/LoginServlet。当用户提交表单时,它调用 servlet/LoginServlet,它被映射到 web.xml 文件中的一个类。我们称这个类为 com.mysite.mypkg.classA。在类 A 中,它调用另一个名为 com.custom.mypkg.classB 的类的方法。我想在 classB 中放置一个断点。

因此,在 Eclipse 调试器中使用带有 login.jsp 页面的 url 将不会调用它。我尝试使用 servlet/LoginServlet,但也没有用。

我应该在 URL 中输入什么?或者,我要调试这种类型的设置吗?

谢谢。

更新 2

我找到了这个网站 here ,内容很全面。我运行了 netstat -a 并注意到未列出调试端口。 Windows 防火墙已关闭,但可能还有其他东西阻止了端口,谁知道呢。无论如何,我在这里放置了 VM 参数,但它不起作用。

Tomcat Config

谢谢。

最佳答案

对于远程调试,您需要以 Debug模式启动服务器。有几种方法可以做到这一点。1> 使用

启动服务器

catinlina.bat jpda start

2> 给tomcat java进程添加jvm参数

-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

服务器以debug模式启动后,需要在eclipse中改变项目的视角进行debug。然后转到运行 ->调试配置。双击远程 java 应用程序并输入详细信息,例如

Remote IP address Debug port . Default tomcat debug port is 8000. If you use jvm argument, use the port mentioned in the jvm argument. Click Apply

转到要调试的 java 文件。在源代码中放置一个断点并运行您要测试的场景(例如使用浏览器的 Web 应用程序)

此外,确保 java 文件中的代码与部署在远程服务器上的代码同步。

调试愉快!!!

和平。桑凯特劳特

关于java - 如何从远程机器上即时调试 Java servlet 过滤器(我使用的是 Eclipse 和 Apache Tomcat 5.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com