背景
在Java项目开发的过程中,本地调试是非常普遍的,但是有些情况也是本地调试所做不到的,例如Maven项目等。
其实这时候就需要远程调试,不管开发工具是Eclipse,还是Netbeans,异或是IDEA,都是可以实现远程调试的,当然这也离不开应用服务器的支持。
具体说明
列举两个应用服务器的实例,一个为resin(4.0版本,以前版本的配置方式可以自行查找)服务器,一个为tomcat服务器。
resin服务器
过resin服务器的童鞋都应该清楚,resin服务器的核心配置文件是resin.xml,进行远程调试的话,需要在resin.xml文件中配置一下标签的子标签。
具体配置如下:
<jvm-arg>-Xnoagent</jvm-arg>
<jvm-arg>-Xdebug</jvm-arg>
<jvm-arg>-Djava.compliler=NONE</jvm-arg>
<jvm-arg>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8082</jvm-arg>
这里需要注意的是address的端口号,这个是监听jvm的端口,如果远程调试是需要输入这个端口号的。配置完成之后重启resin。
后面就需要配置IDE环境了,每个IDE都有下面的配置:

在IDE中需要配置一个Remote java application的配置并且运行找到我们要部署的项目,并且输入主机地址和端口号:

在运行之前确保resin中已经部署了此项目,如果部署了就可以执行了,这时候在IDE中就可以设置断点了,当访问的时候就可以执行到断点处。
Tomcat服务器
配置tomcat,主要是添加一个文件debug.bat,文件内容为
set JPDA_ADDRESS=8000
set JPAD_TRANSPORT=dt_socket
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899
startup
其实这里和resin的类似,address是监听jvm的端口号,这时候以后启动tomcat的时候仅仅启动debug.bat文件即可。
剩下的就是IDE的配置,和resin是一样的。
提示
这里提到的一点就是,如果不想每次打包项目部署的话,可以将resin或者tomcat服务器的部署项目位置直接改成要调试的项目位置即可。
总结
有了远程调试,有些项目的调试不再用打印日志的方式了,还是很方便的。