问题记录:No WebApplicationContext found: no ContextLoaderListener registered
2016-11-25 00:00
555 查看
摘要: spring4.3.1
这个问题困扰了我不少时间。
正在我觉得用hibernate用的越来越得心应手的时候,但是发现出了一个bug,hibernate报no session,这个bug是我在用hibernate的时候不够严谨导致的,后来,我就用网上的方法OpenSessionInViewFilter去解决,不过并没有那么顺利,又出现了一个bug,no ContextLoaderListener registered 。
下面是我原来的web.xml。用的好好地,实际上我之前用mybatis时也是这样配置,junit测试也成功,所以,下面这段代码肯定是加载了spring框架的。
然后,我上网继续查找答案,发现了classloadlistener这个类,其实之前我也用过这种方式去加载servletcontext,但是因为要用mvc,所以还是得用dispatcherservlet。
我当时尝试性的用classloadlistener也加载了一遍,然后错误又回到了一开始,no session。其实我猜到了这个结果,因为OpenSessionInViewFilter的用途是让每一次请求只有一个session,这依赖注册在spring的sessionfactory,现在我用两种办法加载servletcontext,而且很明显,OpenSessionInViewFilter还是只能获取到classloadlistener加载的servletcontext里面的sessionfactory。
我查了一下资料,知道了classloadlistener和DispatcherServlet加载的内容存在不同的attribute里面(反正就是很里面,并不建议直接从那里获取servletcontext),然后我就决定,重写OpenSessionInViewFilter。因为一开始问题就是出现在他身上,他没办法获取dispatcherservlet里面的servletcontext(我尝试了很多办法,如果有更好的办法,希望可以分享一下)。
以下是我的解决办法。
这个问题困扰了我不少时间。
正在我觉得用hibernate用的越来越得心应手的时候,但是发现出了一个bug,hibernate报no session,这个bug是我在用hibernate的时候不够严谨导致的,后来,我就用网上的方法OpenSessionInViewFilter去解决,不过并没有那么顺利,又出现了一个bug,no ContextLoaderListener registered 。
下面是我原来的web.xml。用的好好地,实际上我之前用mybatis时也是这样配置,junit测试也成功,所以,下面这段代码肯定是加载了spring框架的。
<web-app> <display-name>whyville_backend</display-name> <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
然后,我上网继续查找答案,发现了classloadlistener这个类,其实之前我也用过这种方式去加载servletcontext,但是因为要用mvc,所以还是得用dispatcherservlet。
我当时尝试性的用classloadlistener也加载了一遍,然后错误又回到了一开始,no session。其实我猜到了这个结果,因为OpenSessionInViewFilter的用途是让每一次请求只有一个session,这依赖注册在spring的sessionfactory,现在我用两种办法加载servletcontext,而且很明显,OpenSessionInViewFilter还是只能获取到classloadlistener加载的servletcontext里面的sessionfactory。
我查了一下资料,知道了classloadlistener和DispatcherServlet加载的内容存在不同的attribute里面(反正就是很里面,并不建议直接从那里获取servletcontext),然后我就决定,重写OpenSessionInViewFilter。因为一开始问题就是出现在他身上,他没办法获取dispatcherservlet里面的servletcontext(我尝试了很多办法,如果有更好的办法,希望可以分享一下)。
以下是我的解决办法。
@Service public class ComponentKeeper { public static SessionFactory sessionFactory; @Autowired public void setSessionFactory(SessionFactory sessionFactory) { ComponentKeeper.sessionFactory = sessionFactory; } }
public class MyOpenSessionInViewFilter extends OpenSessionInViewFilter { @Override protected SessionFactory lookupSessionFactory(HttpServletRequest request) { return ComponentKeeper.sessionFactory; } }
<web-app> <display-name>whyville_backend</display-name> <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>hibernateFilter</filter-name> <filter-class> com.whyville.backend.util.springEnhanced.MyOpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
相关文章推荐
- No WebApplicationContext found: no ContextLoaderListener registered?
- No WebApplicationContext found: no ContextLoaderListener registered?报错解决
- No WebApplicationContext found: no ContextLoaderListener registered的解决方法
- java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered
- No WebApplicationContext found: no ContextLoaderListener registered?报错解决
- 异常备忘:No WebApplicationContext found: no ContextLoaderListener registered
- No WebApplicationContext found: no ContextLoaderListener registered?
- No WebApplicationContext found: no ContextLoaderListener registered的解决方法
- No WebApplicationContext found: no ContextLoaderListener registered
- No WebApplicationContext found: no ContextLoaderListener registered错误
- No WebApplicationContext found: no ContextLoaderListener registered?
- No WebApplicationContext found: no ContextLoaderListener registered?报错解决
- No WebApplicationContext found: no ContextLoaderListener registered
- No WebApplicationContext found: no ContextLoaderListener registered?
- No WebApplicationContext found: no ContextLoaderListener registered异常
- java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered
- No WebApplicationContext found: no ContextLoaderListener registered?
- No WebApplicationContext found: no ContextLoaderListener registered 错误解决
- No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered? at org.sp
- No WebApplicationContext found: no ContextLoaderListener registered的解决方法