以前做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]交流。