開發環境centos7+idea2016.3+tomcat8.5+jdk8html
具體操做轉載ilanyu's Blog的博客,我這裏主要增長注意事項。java
實現效果:
在idea中點擊run時,自動將代碼編譯並上傳、部署到遠程服務器中。點擊debug時,進行本地調試。linux
和傳統的在本地服務器相比較的優點:
一、節省開發者開發機的資源,省去了本地服務器的CPU、內存的佔用。
二、若是開發的程序爲Android+J2EE或者IOS+J2EE等須要將服務器IP寫入客戶端,不須要客戶端鏈接到同一局域網。web
遠程服務器操做:centos
修改tomcat的JMX[Java Management Extensions,Java管理擴展]參數。關於JMX的介紹能夠參考。。。百度。tomcat
一、修改環境變量,添加Tomcat啓動參數安全
添加Tomcat啓動參數的方法有多種,我這裏用的是將啓動參數添加到環境變量,這種方法會在重啓服務器後丟失啓動參數,從而避免安全性問題,也能夠直接將參數寫入到catalina.sh中bash
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=1.2.3.4" export CATALINA_OPTS
二、清空webapps目錄服務器
rm -rf ./webapps/*
三、清空work/Catalina/localhost/目錄app
rm -rf ./work/Catalina/localhost/*
四、啓動Tomcat
./bin/catalina.sh run &
開發機操做:
一、建立J2EE項目,我這裏使用了maven建立了一個Hello World,如圖
二、添加運行配置
三、運行項目
四、運行效果
注:1.2.3.4爲我這裏使用的遠程服務器IP,實際使用時須要修改成本身的真實遠程服務器IP
參考資料:
http://blog.lanyus.com/archives/197.html
注意事項:
問題
點擊debug的時候也出現了ubable to connect to ip:1099
分析
問題狀態:
一、經過netstat查看端口號,顯示1100爲LISTEN;監聽是正常的;
二、iptables中已經將端口號1100置爲開放的;
三、遠程經過telnet <ip> <port>時,telnet是正常的;
四、(可是)經過jconsole <ip> <port>進行鏈接時,鏈接不上;
五、(若是)關閉firewall的話,第4步的方式是能夠成功的;
解答
In addition to listening to the port you specified (1100) the JMX server also listens to a randomly chosen (ephemeral) port.
Check, e.g. with lsof -i|grep java if you are on linux/osx, which ports the java process listens to and make sure your firewall is open for the ephemeral port as well.
除了JMX server指定的監聽端口號外,JMXserver還會監聽一到兩個隨機端口號
解決辦法一:關閉防火牆(不考慮安全性,推薦)
解決辦法2、能夠經過命令:lsof -i|grep java |grep <pid> 來查看當前java進程須要監聽的隨機端口號,
# netstat -tupln |grep 1101
tcp 0 0 0.0.0.0:1101 0.0.0.0:* LISTEN 13997/java
# lsof -i|grep 13997
java 13997 root 9u IPv4 132890 0t0 TCP *:37040 (LISTEN)
java 13997 root 70u IPv4 132891 0t0 TCP *:pt2-discover (LISTEN)
java 13997 root 72u IPv4 132892 0t0 TCP *:40085 (LISTEN)
java 13997 root 76u IPv4 146976 0t0 TCP hotnamea:61618->10.88.146.205:49165 (ESTABLISHED)
java 13997 root 84u IPv4 132904 0t0 TCP *:61618 (LISTEN)
java 13997 root 95u IPv4 132936 0t0 TCP *:8163 (LISTEN)
把這些端口設置爲開放狀態。
問題2、
添加以下參數能夠開啓遠程調試。
-agentlib:jdwp=transport=dt_socket,address=49739,suspend=n,server=y
最後,感謝lanyus給屌絲同胞們帶來的idea福利(推薦正版)。