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="12345" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="12346" />
<!--  这里是如果不想使用默认的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相关配置

  • 第一处,本地要有和远程服务器上完全相同的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的以下部分对应:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

Centos7 安装python虚拟环境+Django

鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和...

31520
来自专栏灯塔大数据

15 个 Android 通用流行框架大全

? 1 缓存 名称描述DiskLruCacheJava实现基于LRU的磁盘缓存 2 图片加载 名称描述Android Universal Image Lo...

33160
来自专栏Java技术分享

J2Cache——Java两级缓存框架

J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的...

46990
来自专栏云知识学习

Mount命令详解

首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

803150
来自专栏冷冷

SpringMVC 文件下载时 浏览器不能正确显示另存的文件名

问题:通过打印输出流的方式把文件下载到本地,但是在firebox 中 下载的文件不显示文件的文件名,造成文件不能直接打开,其他浏览器可以直接打开. 原因: 主要...

22650
来自专栏java一日一条

15 个 Android 通用流行框架大全

Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

12120
来自专栏闵开慧

Unable to instantiate org.apache.hadoop.hive.metas

hive启动后运行命令时出现: FAILED: Error in metadata: java.lang.RuntimeException: Unable to...

375150
来自专栏大神带我来搬砖

防止DHCP获取的DNS修改/etc/resolv.conf文件

想在centos系统中使用DHCP分配IP,但是使用自定义的DNS服务器,这时重启时会将DHCP获得的DNS服务器写到/etc/resolv.conf文件中,优...

37450
来自专栏JackieZheng

Spring Boot系列——如何集成Log4j2

上篇《Spring Boot系列——日志配置》介绍了Spring Boot如何进行日志配置,日志系统用的是Spring Boot默认的LogBack。

18420
来自专栏安恒信息

安全漏洞公告

1 Apache Sling 'AbstractAuthenticationFormServlet'开放重定向漏洞 ? 2 Apache Commons Fil...

31960

扫码关注云+社区

领取腾讯云代金券