idea 部署web工程 到 远程tomcat服务器上,并调试,记录一下;
环境:
CentOS 7.6
Tomcat 8.5.34 / 8.5.39 / 9.0.12
IDEA 2018.1
1、配置tomcat
tomcat服务器的IP地址:10.132.12.25
tomcat目录位置:/usr/local/apache-tomcat-8.5.34
conf/server.xml中,使用默认http 80端口;
bin/catalina.sh中,添加如下内容;
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.132.12.25" =》tomcat服务器ip地址
export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
如果要远程调试,可以设置CATALINA_OPTS如下:
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.132.12.25 -agentlib:jdwp=transport=dt_socket,address=52951,suspend=n,server=y"
Debug使用socket方式传输,端口号自己设置,比如:52951
启动tomcat,(不能再使用bin/startup.sh);
bin/catalina.sh run &
2、创建maven web工程
使用本地独立的maven环境,maven仓;
创建成功后,默认在main目录下,只有webapp文件夹,包含index.jsp
3、配置远程部署
选项卡:Server
选择Build Artifacts -> web:war exploded ;
选项卡:Deployment
选项卡:Startup/Connection
如果要远程调试,选择Debug,参照第1节的配置,传输方式使用socket,端口52951;
添加远程Server;
也可以通过菜单Tools->Deployment->Configuration...,添加远程Server;
点击Run运行,可以远程部署web;
弹出网页;
如果本地代码修改,只需要重新运行部署即可;
点击Debug调试,可以远程调试web工程;
修改本地Java文件代码,Ctrl+F9,只会把修改后的class文件,上传到远程Tomcat服务器;
(在idea中,stop停止运行,不会影响远程Tomcat的运行)
问题:
1、如果运行时,出现如下错误:
Error running 'tomcat remote run': Unable to connect to the 10.132.12.25:1099, reason: java.rmi.ConnectException: Connection refused to host: 10.132.12.25; nested exception is: java.net.ConnectException: Connection timed out: connect
首先检查下CentOS 7的防火墙,是否没有放通1099端口;
如果是测试的话,可以直接关闭防火墙;
firewall-cmd --state
systemctl stop firewalld.service
2、远程调试时,修改Java文件,Ctrl+F9,可以把编译后的class文件,更新到远程Tomcat服务器;
修改本地jsp、js、css等文件,不会单独更新到远程Tomcat服务器;
因为如下 On 'Update' action,只有两个选项:Hot Swap classes,Redeploy;
TODO 还需要找找其他方法吧
参考:
https://blog.csdn.net/tianjun2012/article/details/52795202
http://www.cnblogs.com/qnight/p/8983145.html