刚写完代码,本地测试无误,准备更新到测试上去。
我这里是采用增量式更新,所以需要把更修改的直接拖到测试服务器的tomcat里面。
然后在manager页面重启。
然后神奇的事情发生的,项目提示启动成功,但是打开页面404.
仔细看tomcat
SEVERE: Error listenerStart
Mar 21, 2017 2:38:44 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/inputdata] startup failed due to previous errors
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/inputdata] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/inputdata] appears to have started a thread named [Timer-3] but has failed to stop it. This is very likely to create a memory leak.
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/inputdata] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
一段神奇的提示,然后各种百度,不解。
Mar 21, 2017 2:38:44 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/inputdata] startup failed due to previous errors
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/inputdata] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/inputdata] appears to have started a thread named [Timer-3] but has failed to stop it. This is very likely to create a memory leak.
Mar 21, 2017 2:38:44 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/inputdata] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
这才想起来log4j关闭了错误提示功能,输入到文件中,一时想不起来放在那里了,就叫同事去看看,结果同事看错了位置,和我说没有报错。
立马慌了,立马去回滚。直接把当前的项目删了,然后准备用cp的 结果同事叫我用mv,蛋疼的事情来了,备份的时候多了一级目录,然后又去把tomcat里面的项目删了。
这时回头又想重新去复制的时候发现,备份的代码怎么不见了,mv真是坑爹啊。
没办法只能去线上sync到测试服务器。
回滚后发现代码又正常了,百思不得其解。
捣鼓半小时后还是没发现原因。
最后把log4j配置文件拖到测试,终于发现了真正报错原因,dao注入失败,配置dao的文件搞错了,三下五除二解决。
问题最终解决了
总结一下:
第一怪自己不小心把dao配置文件搞错了
第二没有亲自去看log文件的报错信息