记录一次tomcat排错过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一次tomcat排错过程相关的知识,希望对你有一定的参考价值。

现象环境描述:测试环境,一直在运行跨易达系统(业务系统),研发重新发了个war包,就访问不了了,提交到运维这边说是环境问题,于是我开始排查。


1、JAVA_HOME、CATALINA_HOME检查

[[email protected] conf]# echo $JAVA_HOME

/usr/local/jdk1.7.0_60

2、检查server.xml 

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

<Context path="" docBase="/usr/local/oss/greenpass/wtpwebapp/greenpass" debug="0"  crossContext="true"  reloadable="true" trusted="false" />

检查修改后的网站根目录,没有问题

浏览器访问提示,网页不存在

技术分享

curl提示404

技术分享

很奇怪,程序代码明明放在根目录里面,怎么会找不到呢!

3、查看日志

tail -f catalina.out,重新启动tomcat,提示日志错误如下:

技术分享里面有些错误和警告,主要是:

十一月 23, 2013 7:21:58 下午 org.apache.catalina.core.StandardContext startInternal

SERVER: Error filterStart

十一月 23, 2013 7:21:58 下午 org.apache.catalina.core.StandardContext startInternal

SERVER: Context [/st] startup failed due to previous errors

4、分析原因,解决方法

分析:Tomcat后台信息太少以至于不能得出问题空间出在哪儿(Tomcat的日志目录也无相关信息)通过配置Tomcat的Log,让它记录更多的日志信息,方能进一步分析原因。在不能启动的Web应用目录(我这里是st)下WEB-INF/classes目录中,新建logging.properties文件,内容参考如下

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
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.log2016-05-23.log,如下图:

技术分享

more error-debug.log2016-05-23.log,发现一个错误提示信息:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name ‘dataSourceJdbc‘ defined in file [/usr/local/oss/greenpass/wtpwebapp/greenpass/WEB-INF/classes/config/spring/spring-datasource.xml]: Could not resolve placeholder ‘db1.driver‘ in string value 

"${db1.driver}"

发现是web根目录的spring-datasource.xml里面的db1.driver没有定义,跟开发说了这个问题以后,注释掉这部分代码就能够正常访问了。


备注:server.xml里面有关于logs配置的信息,如下:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt"

               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

默认是开启的,每天会生成一个单独的日志,例如:localhost.2016-05-22.log,我的这一块的配置不知出于什么原因被注销了,不然也不会费这么长时间了。

本文出自 “Linux技术交流” 博客,请务必保留此出处http://9678130.blog.51cto.com/9668130/1782050

以上是关于记录一次tomcat排错过程的主要内容,如果未能解决你的问题,请参考以下文章

centos7 内核升级记录及一次踩坑排错

centos7 内核升级记录及一次踩坑排错

记录一次tomcat服务宕机优化的过程

记一次JavaWeb-Servlet排错过程

记录一次ora-01078错误的排错

记录一次vue 访问空白的排错