在实际项目开发中会用到很多优秀的项目,比如jeecg,就是一款优秀开源的RBAC模型的项目。

能够有效的提供开发效率,为小项目提供敏捷开发的一种方式。


jeecg部署到centos环境 ,并部署到tomcat中遇到问题。

重启tomcat时报Error was Port already in use: 40001 错误。


原因:jeecg使用的本地缓存ehcache技术并占用40001端口,可以从ehcache.xml 文件中看到


解决办法:查找40001端口占用的进程号,然后kill掉

一般使用 lsof -i:40001 

然后 kill -9 进程号


然后我就写了一个命令,一条命令解决。

kill -9 `lsof -i:40001 |awk 'NR==2{print $2}'`


可以把这条命令放入 tomcat  startup.sh 或者 shutdown.sh中

或者单独搞一个脚本restartTome.sh

#!/bin/bash

set -m


echo > /usr/local/apache-tomcat-7.0.62/logs/catalina.out

/usr/local/apache-tomcat-7.0.62/bin/shutdown.sh

kill -9 `lsof -i:40001 |awk 'NR==2{print $2}'`

/usr/local/apache-tomcat-7.0.62/bin/startup.sh


tail -f /usr/local/apache-tomcat-7.0.62/logs/catalina.out


这里要注意的是 set -m 这个关键的地方一定要添加。不信你就别加。-。-