【Tomcat】Tomcat报错追踪
应用部署上之后无法正常启动。tomcat启动日志例如以下:
信息: Starting service Catalina
2015-7-22 18:39:31 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.36
2015-7-22 18:39:31 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory cdr
2015-7-22 18:39:31 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(/cdr/webserver/CDR2.0/webapps/cdr/WEB-INF/lib/javaee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
2015-7-22 18:39:34 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2015-7-22 18:39:34 org.apache.catalina.core.StandardContext start
严重: Context [/cdr] startup failed due to previous errors
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/cdr] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/cdr] 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.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [FileWatchdog] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-5] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-1] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-3] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-4] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 18:39:34 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2015-7-22 18:39:34 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:9090
2015-7-22 18:39:34 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/11 config=null
2015-7-22 18:39:34 org.apache.catalina.startup.Catalina start
信息: Server startup in 3280 ms
開始以为是jar包冲突,删除javaee.jar包攻克了jar包冲突问题,启动依旧报错,日志信息例如以下:
2015-7-22 19:34:23 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2015-7-22 19:34:23 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.36
2015-7-22 19:34:23 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory cdr
2015-7-22 19:34:25 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2015-7-22 19:34:25 org.apache.catalina.core.StandardContext start
严重: Context [/cdr] startup failed due to previous errors
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/cdr] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/cdr] 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.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [FileWatchdog] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-5] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-1] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-3] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/cdr] appears to have started a thread named [Thread-4] but has failed to stop it. This is very likely to create a memory leak.
2015-7-22 19:34:25 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2015-7-22 19:34:25 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:9090
2015-7-22 19:34:25 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/10 config=null
2015-7-22 19:34:25 org.apache.catalina.startup.Catalina start
信息: Server startup in 2639 ms
这时候报错仅仅能看到和JDBC有一些关系,报错不明显。
通过下面设置能够设置对于Tomcat的追踪。生成更为具体的错误报告:
在WEB-INF/classes文件夹下新建一个文件叫logging.properties,内容例如以下:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
这样,我们再启动tomcat时,就会在logs文件夹下生成一个更具体的日志error-debug.**.log
,而且具体报错也会在应用的日志中输出出来。通过该种设置,能够看到的具体错误例如以下:
......
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'cdr.gg_alarm_contact_r' doesn't exist
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'cdr.gg_alarm_contact_r' doesn't exist
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'cdr.gg_alarm_contact_r' doesn't exist
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
......
能够看到真正导致Tomcat无法启动的原因是因为数据库中缺乏表cdr.gg_alarm_contact_r,又一次创建该表后应用启动正常。
总结:
Tomcat本身启动的报错可能都比較含糊,可能仅仅提示了Error listenerStart。为了调试,我们要获得更具体的日志。这时候就能够通过这样的方法进行设置。从而更有效的追踪具体的报错。
相关文章
- nginx+tomcat实现负载均衡以及session共享(linux centos7环境)
- Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)
- Docker实战部署应用——Tomcat
- tomcat启动报错 java.net.ConnectException: Connection refused: connect
- eclipse配置tomcat,访问http://localhost:8080出现404错误
- Tomcat访问路径去掉项目名称
- Tomcat详解(二)——tomcat安装与配置
- Shell tomcat多实例部署
- spring boot报错:Unable to start embedded Tomcat server 权限不够
- 通过EmbeddedServletContainerCustomizer接口调优Tomcat
- The APR based Apache Tomcat Native library which allows optimal performance in production 问题的解决
- 从零开始手写Tomcat的教程6节----生命周期
- Spring Boot为什么不需要额外安装Tomcat?
- BeanNotOfRequiredTypeException:记一个不当的dubbo引用导致的tomcat服务启动报错
- tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException
- Tomcat 的context.xml
- 探秘Tomcat——连接器和容器的优雅启动
- 探秘Tomcat(一)——Myeclipse中导入Tomcat源码
- 007-tomcat 下多个War发布详解步骤[同一个Tomcat 同一个端口 部署多个项目、同一个Tomcat 多个端口 部署多个项目]
- 从零开始手写Tomcat的教程6节----生命周期
- 从零开始手写Tomcat的教程10节---安全性
- (六)Jenkins部署项目报错The username you provided is not allowed to use the text-based Tomcat Manager (error
- tomcat Context容器(中):Tomcat如何隔离Web应用?
- Tomcat 一文带你了解tomcat体系结构
- Tomcat 8080|8009|8005 端口作用