想用hibernate的lazy方式,在网上看到这样可能会由于session关闭导致lazy不进来,于是想配置一下OpenSessionInViewFilter,在web.xml中配置如下 <filter>
<filter-name>OpenSessionInViewFilter</filter-name>    
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
 </filter>
 <filter-mapping> 
    <filter-name>OpenSessionInViewFilter</filter-name> 
    <url-pattern>*.do</url-pattern>  
 </filter-mapping>
这样配置之后只要调用到action,就会报出下面错误:
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:70)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:241)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:227)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:171)我使用的版本分别是Struts1.3,Hibernate3.2,Spring2.5,tomcat6.0.20

解决方案 »

  1.   

       <url-pattern>*.do</url-pattern>  
      换成
     <url-pattern>/*</url-pattern>  
    试试~
      

  2.   

    http://zsgzs.javaeye.com/blog/396587
    看看~应该跟你情况差不多,少了配置。
      

  3.   

    按照他的配置在web.xml添加了<listener> 
       <listener-class> 
        org.springframework.web.context.ContextLoaderListener 
       </listener-class> 
    </listener>和<context-param>   
          <param-name>contextConfigLocation</param-name>   
          <param-value>/WEB-INF/applicationContext.xml</param-value>   
       </context-param>然后把struts-config.xml里面的<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
    value="/WEB-INF/action-beans.xml" />
    </plug-in>红色部分原来是把所有的spring配置文件都加在这里,现在只加了和action有关的xml,剩下的spring配置文件都放在web.xml里面上面蓝色字部分。我现在不清楚这样做之后是不是就在web级和struts两个地方都加载了spring的beans?这样做是不是有问题?
      

  4.   

    <param-value>/WEB-INF/applicationContext.xml</param-value>
    这里这样只加载了applicationContext.xml
    如果applicationContext.xml里面没加载别的文件,那不会被加载
    所以你这两个地方没冲突
    最好加个<load-on-startup>0</load-on-startup>
    值越大,优先级别越低