您的位置:首页 > 运维架构 > Apache

严重: Catalina.start: org.apache.catalina.LifecycleException: Failed to start component [StandardServ

2015-09-14 17:08 267 查看
           花了三个小时才找到bug,还是Eclipse报错才发现的。

           如果你遇到这个错的情形和我是一样的原因。

          我是把SpringMVC+Hibernate的项目转换成SpringMVC+Mybatis项目的时候报错这么多。

严重: Catalina.start:
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:684)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:451)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
后来换到另外一台电脑上,报错时,提示找不到sessionFactory,这时,我才想起来我在利用Spring配置Mybatis时根本配置的是jdbcDataSourse和sqlSessionFactory。而Spring配置Hibernate时配置的是dataSourse和sessionFactory。

       在web.xml中,配置OpenSessionInView这个过滤器时,要给org.springframework.orm.hibernate3.support.OpenSessionInViewFilter类里面的sessionFactory初始化,在之前使用Hibernate时,没有问题,Spring会自动加载另外一个配置文件中的sessionFactory,而换成mybatis后,由于没有配置sessionFactory,所以一直报错。

        最终解决方法,直接将这个过滤器注释掉即可,使用mybatis好像不用配置OpenSessionInView,页面也能得到session数据,暂时不知道原因为何。希望有人可以看到这篇博客帮忙解答下。

============================================================

2016.617 增加

在使用Mybatis时,之所以不用配置OpenSessionInView,是因为我做的小例子里面涉及到的Model就一个,不存在使用懒加载情况,所以直接注释不影响
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息