如何在远程机器上动态调试Java servlet过滤器(我使用Eclipse和Apache Tomcat 5.5)
我在本地机器上编写了一个JavaServlet过滤器,并将其部署到远程(机器)web服务器上。不幸的是,试图跟踪ApacheTomcat5.5(我的JSP/servlet引擎)报告的错误是非常困难和耗时的。我无法继续编写System.out.println(…),保存、部署、测试JSP页面等等。时间太长了。必须有更好更快的方法 是否可以远程调试servlet过滤器?我的本地机器上没有web服务器,这就是我询问远程调试的原因。具体地说,我正在寻找一种在远程web服务器上实时调试servlet过滤器的方法。这种方法存在吗 或者,还有比写入标准输出更好的方法吗。它花费的时间太长,我觉得这应该是调试Javaservlet过滤器的更有效的方法 注意:我正在使用Eclipse进行开发 非常感谢你的帮助 更新 谢谢大家的帮助。我真的很感激 我将JVM参数添加到Tomcat,重新启动了Tomcat。然后,在使用Eclipse的机器上,我在调试配置中输入了适当的信息,放入断点,并进行了测试。不幸的是,它没有起作用。在配置中,我将其保留为socketattach,单击apply,就这样。我按了调试按钮,它说连接被拒绝了。我尝试了端口8000和8001,但两者都不起作用 让我解释一下我想做什么,那样可能更好 我有一个名为login.jsp的登录页面。在该页面上,是一个其操作属性为servlet/LoginServlet的表单。当用户提交表单时,它调用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参数放在这里,它不起作用如何在远程机器上动态调试Java servlet过滤器(我使用Eclipse和Apache Tomcat 5.5),java,debugging,servlets,servlet-filters,remote-debugging,Java,Debugging,Servlets,Servlet Filters,Remote Debugging,我在本地机器上编写了一个JavaServlet过滤器,并将其部署到远程(机器)web服务器上。不幸的是,试图跟踪ApacheTomcat5.5(我的JSP/servlet引擎)报告的错误是非常困难和耗时的。我无法继续编写System.out.println(…),保存、部署、测试JSP页面等等。时间太长了。必须有更好更快的方法 是否可以远程调试servlet过滤器?我的本地机器上没有web服务器,这就是我询问远程调试的原因。具体地说,我正在寻找一种在远程web服务器上实时调试servlet过滤器
谢谢。如果在启动Tomcat实例时为其提供了正确的命令行选项,则可以将调试器附加到正在运行的Tomcat实例 说明了如何做到这一点,另外,还提供了有关如何设置以从Eclipse或NetBeans IDE进行调试的说明 当然,将调试器附加到运行中的Tomcat会带来安全性和性能方面的影响*
*职业健康和安全问题-如果你在错误的tomcat上尝试,你可能会被严重划伤 您应该使用以下启动参数运行远程tomcat:
bin/catalina.bat jpda start
然后在本地机器上的Eclipse中运行->调试配置->远程Java应用程序,在此处创建新配置,将远程机器的IP用作主机,将8000用作端口
运行此配置并使用Eclipse中的断点进行调试对于远程调试,您需要在调试模式下启动服务器。有两种方法可以做到这一点。
1>使用启动服务器
catinlina.bat jpda开始
2>向tomcat java进程添加jvm参数
-Xdebug-Xrunjdwp:transport=dt_套接字,地址=8000,服务器=y,挂起=n
在调试模式下启动服务器后,需要将eclipse中项目的透视图更改为调试。
然后转到运行->调试配置。
双击RemoteJava应用程序并输入详细信息,如
远程IP地址
调试端口。默认的tomcat调试端口是8000。如果使用jvm参数,请使用jvm参数中提到的端口。
单击应用
转到要调试的java文件。
在源代码中放一个断点,然后运行要测试的场景(例如使用浏览器的Web应用程序)
另外,确保java文件中的代码与部署在远程服务器上的代码同步
调试快乐
和平。
Sanket Raut为什么你的电脑上没有一个Tomcat。我甚至不能考虑在没有本地Servlet引擎的情况下开发Servlet应用程序?噩梦:-)非常感谢。我会试试这个。因此,主机是server1.myhost.com,通常在端口80上运行。对于调试,基本上应该是server1.myhost.com:8000?是的,无论tomcat运行在哪个端口上,默认情况下都应该使用8000进行调试。非常感谢。我试过了,但没用。我将jvm参数添加到tomcat,重新启动tomcat,然后转到eclipse中的调试配置(位于另一台机器上)。输入信息,输入断点,然后进行测试。我将编辑我的问题并解释它。我尝试了第二种方法,将其添加为jvm参数(请参阅问题中的更新3),但它不起作用。我在问题中链接的站点说使用了tomcat的第一种方法,我做到了。我不得不修改JAVA_HOME变量以指向JDK文件夹,并设置了几个其他环境变量,现在它可以工作了。非常感谢你们的帮助和所有做出贡献的人。非常感谢你们的帮助。我很感激。