idea 远程调试 tomcat web应用

最近在做的一个东西,测试环境和本地环境差距太大,本地能运行的代码,放到测试环境上到处报错,哪里哪里都连不上,所以决定把代码部署到远程服务器上调试,节省时间。

网上看了很多教程,大部分都是互相抄来抄去,照做了也调不通,所以决定把自己的步骤发上来,但是不会对这些步骤作详细解释,需要明白原理的童鞋请自行百度...


远程环境:debian 7 ,tomcat7 , jdk1.8

本地:win7,tomcat7,jdk1.8,idea2017

默认jdk均已安装好。

1.远程tomcat配置:

部署在/home/YOUR_USERNAME/apache-tomcat-7.0.82

  • conf/server.xml

  这个文件里要配置的东西其实不多。

<Connector port=" protocol="HTTP/1.1"
               connectionTimeout="
               redirectPort=" />
<!--  这里是如果不想使用默认的8080端口 改成12345 ajp什么的同理-->
  • bin/catalina.sh

  这个文件里在开头加三行:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12347 ##这个地方是jmx调试端口,需要和idea对应,下文会说明
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=debian"

export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=56723,suspend=n,server=y" ##这里的address也要和idea里的对应

export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=12347 ##同上一个12347
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -Xdebug"

然后,启动tomcat: bin/catalina.sh jpda start

注意 不要用其他命令启动

2.idea相关配置

idea 远程调试 tomcat web应用

  • 第一处,本地要有和远程服务器上完全相同的tomcat版本
  • 第二处,浏览器的位置填的是http://远程服务器:端口号
  • 第三处,jmx端口,要跟catalina.sh里面填的端口相同
  • 第四处,staging方式,我选的是用sftp上传到远程环境上,这种方式要求远程服务器开启了ssh并且配置了sftp服务,这里可以根据你怎么方便怎么来。sftp这里host后面的那三个点点开后的配置里只用填第一个tab,后面空着。path from root 是/apache-tomcat-7.0.82/webapps ,mapped as是/home/YOUR_USERNAME/apache-tomcat-7.0.82/webapps,因为我在设定host时,设定root是/home/YOUR_USERNAME/。
  • 第五处,host就是远程主机名,port就是之前在connector中定义的端口号。
  • 最后,before launch的选项卡下,build artifact时选 war,不要选war exploded

3.之前的catalina.sh中配置的

export JPDA_OPTS=

这一行,实际上是和idea的以下部分对应:

idea 远程调试 tomcat web应用

OK,接下来就可以在程序中打断点,并且开启调试了。

上一篇:java web中filter分析


下一篇:java web filter 学习(2)