zoukankan      html  css  js  c++  java
  • org.springframework.web.struts.ContextLoaderPlugIn 和 org.springframework.web.context.ContextLoaderListener

    org.springframework.web.struts.ContextLoaderPlugIn 和 org.springframework.web.context.ContextLoaderListener


    是视图层加载sping的两种方式。
    那么这两种方式谁的优先级高,从容器加载程度上看,是org.springframework.web.context.ContextLoaderListener

    那么中方式都被配置在项目中,会使用哪个一个呢?
    答案是org.springframework.web.struts.ContextLoaderPlugIn

    当然如果你不需要在视图层采用lazy而配置org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    那么你可以两个都配置。
    但如果你需要使用,那就会。

    我们知道,容器初始化Spring配置文件时,使用getServletContext().setAttribute方法key,value全局保存。
    那么当你使用OpenSessionInViewFilter时,他取得的是哪个呢?

    其实OpenSessionInViewFilter是sping的Filter,它采用WebApplicationContextUtils的方式获得WebApplicationContext
    ,但它并不能加载由struts-config.xml文件ContextLoaderPlugIn提供初始化的上下文。

    如果你需要在视图层加载一对对....等关联对象。那么就会有
    could not initialize proxy - the owning Session was closed
    错误。
    到此处我们看到,sping在应用程序和OpenSessionInViewFilter之间,加载了不同的上下文。
    我们知道OpenSessionInViewFilter下无法获得ContextLoaderPlugIn加载的上下文,那我们可以推算,
    应用程序应该加载了ContextLoaderPlugIn上下文,而OpenSessionInViewFilter却加载了ContextLoaderListener的上下文。
    才导致视图层session有关闭的问题。

    尝试解决此问题,若你配置了两个,则删除ContextLoaderPlugIn的加载方式。
    若你只配置了ContextLoaderPlugIn的加载方式,则改成ContextLoaderListener加载方式。

    原创文章,转载请注明出处。
    http://www.blogjava.net/beijing2008/articles/317973.html

  • 相关阅读:
    angularjs中的jqlite的认识理解及操作使用
    轻谈Normalize.css
    oppo R9 WLAN使用代理图解
    前端小炒的win7使用笔记(收藏篇)
    git操作方便,简单使用的客户端sourcetree 安装配置所遇问题总结
    关于js中对事件绑定与普通事件的理解
    IT最新最火的网络词汇*2*(文章来源电商)
    Git笔记之初识vi编辑器
    番茄钟工作法--我们天生爱分享
    探讨"点"语法的奥秘
  • 原文地址:https://www.cnblogs.com/sharpest/p/7447788.html
Copyright © 2011-2022 走看看