设为首页 加入收藏

TOP

HTTP Status 500 - Could not write content: could not initialize proxy - no Session
2019-09-03 03:02:15 】 浏览:18
Tags:HTTP Status 500 Could not write content: could initialize proxy Session

 分析出现no Session错误的原因以及给出解决方案:

   使用SpringMVC + JSON数据返回时,经常会出现no Session的错误:

  报错原因:因为懒加载在提取关联对象的属性值的时候发现EntityManager已经被关闭,就报no session错误。

  控制器类中的方法上添加了@ResporseBody注解,将方法的返回值利用jackson包自动转化为JSON字符串,然后放入响应消息体中,最后发送到浏览器;

  然而jackson包都会自动调用对象的属性的get方法来获取属性的值拼接成JSON字符串,而调用get方法就需要自动发送SQL语句去查询关联对象的数据,结果发现EntityManager对象已经关闭了,已经无法在通过EntityManager对象去查询关联对象的get方法,所以就会报 no session异常。

 

  解决办法:让关闭EntityManager对象的动作延后到提取懒加载对象的数据之后再关闭。

  具体做法:在web.xml中添加一个过滤器OpenEntityManagerInViewFilter,使EntityManager对象的开启和关闭在视图层发生。

<!-- 解决no session问题 -->
  <filter>
    <filter-name>noSessionFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>noSessionFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java设计模式--策略模式 下一篇Java Serializable:明明就一个空..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目