OpenSessionInViewFilter失效

路人丁语 发布于 2015/10/03 17:16
阅读 104
收藏 1

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <filter>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
          org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping></web-app>
struts.xml

<struts>
    <!-- 交给spring来配置 -->
    <constant name="struts.objectFactory" value="spring" />
</struts>   
在我用spring test+junit进行测试的时候是 no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize

加载中
0
杨延庆
杨延庆
很简单,junit启动时没有加载web.xml文件的,除非你在Test的注解里显式加载
0
路人丁语
路人丁语

引用来自“杨延庆”的评论

很简单,junit启动时没有加载web.xml文件的,除非你在Test的注解里显式加载
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/applicationContext.xml")
public class JTest extends AbstractJUnit4SpringContextTests
{
    @Resource
    private CrmAction crmAction;
    @Test
    public void test()

    {

这是我的test,你给看看问题在哪里

0
杨延庆
杨延庆
@ContextConfiguration(locations={"classpath:applicationContext.xml",

"classpath:applicationContext-security.xml","file:src/main/webapp/WEB-INF/servlet.xml"})

你把web.xml加载一下

基本上不赞成这样做,你应该换一个思路,考虑hibernate的延迟加载问题

杨延庆
杨延庆
@路人丁语 不是,分两次查询,或者自定义一个session,让查询在一个session内完成,不关闭
路人丁语
路人丁语
你的意思是把延迟加载换成即时加载?
返回顶部
顶部