我们的系统Dao层使用的ORM映射框架是Mybatis3.1.1,在启动J2EE容器(Tomcat)时,服务器一直在启动,查看日志也不报错。

日志如下:

……

2013-11-10 10:36:43,963 [pool-2-thread-1] INFO com.mchange.v2.log.MLog - MLog clients using log4j logging.
2013-11-10 10:36:44,041 [pool-2-thread-1] INFO com.mchange.v2.c3p0.C3P0Registry - Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]

日志就一直停在这里,一开始我们都以为是数据库连接池有问题。但是想了下觉得不可能,因为之前一直都用的好好的,也没有人动过连接池有关的代码。

因为在做的feature修改了数据库表结构,而且修改了mybatis的映射文件,所以觉得应该是映射文件里面有错误导致的。但是如果映射文件里面有错误,在启动的时候日志里面应该会有mybatis的错误日志,令人遗憾的是,日志文件里面很和谐,一点都没有错误日志。

而服务器也一直处在启动状态,一直没有出现令人兴奋的

2013-11-10 11:10:42 org.apache.catalina.startup.Catalina start
信息: Server startup in 39179 ms


没有办法,查了好多资料也没有眉目,只好在回去检查修改过的mybatis映射文件。经过不懈的努力,终于发现了mybatis映射文件中的错误,重新build,启动服务器,果然启动成功!

后来经过同事提示,可以从org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory1455行看到具体的异常!

刚开始还觉得不靠谱,解决问题后,再恢复到之前错误的映射文件,重现错误再是一下。

重新启动服务器,服务器仍然提示没有启动完全(但服务器其实已经启动了,只是没有成功启动),然后在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory1455行打上断点,进行Debug调试,debug到此处时,发现的确抛出了异常,而且异常信息里面也提示是mybatis中的错误!


在此做个标记,以免以后碰到类似的问题,无从下手!感觉这个可能是mybatis里一个bug,应该把这个异常给打出来!




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐