Tomcat deploy war 包的时候一直处于 loading 状态,没有任何错误日志,一直处于 init 中,而且程序也没有日志输入。通过 dtruss (linux 上可以使用 pstrace) 追踪发现因为 Tomcat 一直找不到一个目录,所以不停的在重试

psynch_cvwait(0x7F8A93E09568, 0x40A0100040B00, 0x40A00)      = 0 0
psynch_cvwait(0x7F8A93C36368, 0x2490100024A00, 0x24900)      = 0 0
gettimeofday(0x7000041DAB00, 0x0, 0x0)       = 0 0
stat64("/usr/local/apache-tomcat-7.0.56/webapps/parkManage/WEB-INF/classes/some/package/xml/mapping\0", 0x700004BCEFF0, 0x0)         = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/lib/some/package/xml/mapping\0", 0x700004BCE7B0, 0x0)        = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/webapps/parkManage/WEB-INF/classes/some/package/xml/mapping\0", 0x700004BCE760, 0x0)         = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/lib/some/package/xml/mapping\0", 0x700004BCDF20, 0x0)        = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/webapps/parkManage/WEB-INF/classes/some/package/xml/mapping\0", 0x700004BCEFF0, 0x0)         = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/lib/some/package/xml/mapping\0", 0x700004BCE7B0, 0x0)        = -1 Err#2
stat64("/usr/local/apache-tomcat-7.0.56/webapps/parkManage/WEB-INF/classes/some/package/xml/mapping\0", 0x700004BCF880, 0x0)

通过项目查看该目录不存在,mvn 打包时没有打包该目录,检查 pom.xml 文件发现是目录写错了,所以打包时被忽略了。

解决方式是修改 pom.xml 重新打包。

PS: 注意 dtruss 或者 pstrace 这些工具,可以在关键时刻帮你快速定位问题,因为是后期维护的项目,所以特别困惑当时第一次的项目是怎么部署的。

EOF;