小跟班是个新手,为了这个错误搞了大半天,tomcat解压了无数遍最后才发现不是tomcat的问题。
问题:Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
这个问题小跟班发现有两种情况会出现,如下:
1、项目工程过大,服务器启动时间过长导致tomcat超时,这个问题百度上太多了,小跟班一开始也以为是这个问题,结果搞了半天不是这个原因,附上一个连接,来解决这种情况下的tomcat 45s超时:http://blog.csdn.net/u011067360/article/details/37884783
2、这就是小编遇到的Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds问题了
错误信息一直打印这三句
45s后
因为这个超时的错误提示,让小跟班一直在找关于45s超时的问题,但是使用无法解决。
过来根据上边的三句警告才找到了真正的错误信息是什么:
仔细看异常发生在 (org.springframework.web.context.ContextLoader),即在ContextLoader时,spring framework需要使用log4j但此时log4j未寻找到其配置文件。其实解决方法,只要将log4j的listener放在spring context的前面就可以了。此外,如果按照默认的log4j配置文件位置也可以避免这个警告(src/log4j.properties,即WEB-INF/classes/log4j.properties),这是因为spring framework获取log时,log4j可以找到其配置文件了。
log4j 文件内配置如下(资源来自这个链接)
### set log levels ###
log4j.rootLogger = debug , stdout , D , E
### \u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### \u8F93\u51FA\u5230\u65E5\u5FD7\u6587\u4EF6 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## \u8F93\u51FADEBUG\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### \u4FDD\u5B58\u5F02\u5E38\u4FE1\u606F\u5230\u5355\u72EC\u6587\u4EF6 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## \u5F02\u5E38\u65E5\u5FD7\u6587\u4EF6\u540D
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## \u53EA\u8F93\u51FAERROR\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
web.xml中配置如下(切记!一定要配置在spring监听器之前,这是因为spring framework获取log时,log4j可以找到其配置文件了)
然后在启动服务器打印的错误信息就很明显了
log4j打印错误信息是因为spring容器去访问数据库连接不到数据库,产生了超时。
因为小跟班工程中使用的ssh,配置了spring容器,在程序启动是会根据web.xml的配置进行加载spring的配置文件applicationContext.xml
小跟班的spring配置如下
spring容器去配置c3p0连接池时,会去访问数据库(这里小跟班用的MySQL)
重点就是小跟班的数据库服务没有启动!!!才导致了spring连接数据库是一直在等待,而tomcat等待spring配置加载完毕,才产生了最上边的两个错误信息(45s超时的错误信息!)
哈哈! 启动数据库服务就解决问题了
网友评论