以前做JavaEE項目用的都是MyEclipse,但是苦於該IDE的流暢度以及代碼重構時的困難(用了之後你就知道了,尤其是針對於類和變量的重命名),我決定更換到IntelliJ IDEA,如果各位也想更換的話,入門不是很困難,針對於學生提供一年一次審覈的免費套裝,全套裝的Ultimate版,正式拜託盜版。
好的,切入正題,用過eclipse(Java EE版)和myeclipse的同學們都知道,發佈項目其實是導出成war包直接傳到webapp下刷新就行了,但是IntelliJ導出war包太麻煩,由此,idea提供了一個更爲便捷的方法,可以直接將tomcat配置到遠程服務器,在intellij上“稍加”配置就可以直接發佈到遠程的tomcat服務器了。
配置遠程發佈請移步https://segmentfault.com/a/1190000012762629
上面這個blog的博主寫的非常詳細,在此爲博主打call!!!
但是這個教程還是存在問題的。在翻遍各大論壇的教程,再加以自己的經驗分析,最終成功的將ssm項目發佈到了博主阿里雲的遠程服務器上。
詳細研究之後總結了以下幾點問題:
1、啓動Catalina時1099端口被佔用
2、1099端口連接超時
博主的運行環境是:
IntelliJ IDEA:2018.1
Tomcat:阿里雲遠程Tomcat
系統:CentOS
解決方案:
1、端口被佔用:
執行下面命令:
netstat -tln | grep 1099
將會得到端口的使用情況
再執行
lsof -i:1099
(未找到命令執行yum install lsof)
將會得到使用端口的程序
找到相應的PID
執行
kill -9 PID
2、端口連接超時
在網上我也搜了好多的教程,但是或多或少的都存在問題,不是連接不成功就是連接超時,其根本問題就是出在了1099端口上。最典型的問題就是
Error running 'TomcatRemote':
Unable to connect to the xx.xx.xx.xx:1099,
reason:
java.rmi.ConnectException: Connection refused to host: xx.xx.xx.xx;
nested exception is: java.net.ConnectException: Connection timed out: connect
這個錯誤根本原因就是服務器的配置出了問題,jmx沒有成功啓動。
解決方法就是在catalina.sh文件中添加如下代碼:
JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname="
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
export JAVA_OPTS
到如下位置:
以前tomcat用的啓動方式是./start.sh
而現在用的是caatalina.sh,就需要用catalina啓動,具體命令如下
./catalina.sh run
但這樣啓動的話會導致當前終端被阻塞,並且關閉終端後無法繼續後臺運行
因此命令改爲:
catalina.sh run > /dev/null 2>&1 &
其中“ > /dev/null 2>&1 &”是Linux中的命令:把標準輸出和出錯處理都放到回收站,這樣就免得一大堆輸出佔領你的屏幕。
以上呢,就是IntelliJ在發佈到遠程的Tomcat上遇到的最常見的問題。如果有其他問題歡迎聯繫[email protected]交流。