`
longxingtx520
  • 浏览: 18379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

SSH2 OpenSessionInViewFilter

    博客分类:
  • java
阅读更多

这两天被两个异常弄的头都大了,经过网上查资料,终于把问题解决了。如果各位有好的解决方案,忘指教。

 

首先遇到以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

 

网上有些解决方案是在web.xml文件中改写以下代码(红色部分为改写后)

<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
		<init-param>
			<param-name>singleSession</param-name>
			<param-value>false</param-value> 
		</init-param>
		
	</filter>
	
	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

但是会引发发一个新的异常,org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions,如先执行查询操作,再进行更新操作。

 

最后通过查找网上资料,终于找到解决方案。

最终解决方案:

重写类OpenSessionInViewFilter类中的getSession和closeSession方法:

@Override
 protected void closeSession(Session session, SessionFactory sessionFactory) {
  session.flush();
  super.closeSession(session, sessionFactory);
 }
 @Override
 protected Session getSession(SessionFactory sessionFactory)
   throws DataAccessResourceFailureException {
  Session session = SessionFactoryUtils.getSession(sessionFactory, true);
  session.beginTransaction();
  FlushMode flushMode = getFlushMode();
  if (flushMode != null) {
   this.setFlushMode(FlushMode.AUTO);
  }
  session.getTransaction().commit();
  return session;
 }

然后再web.xml中写入如下代码:

<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>。。。。。。.MyOpenSessionInViewFilter</filter-class>	
	</filter>
	
	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 
OK!到此问题解决。

 

如果各位有好的方法,请赐教。

 

分享到:
评论

相关推荐

    ssh2开发步骤与项目实践宝典

    SSH2,全称为Struts2、Hibernate2和Spring2,是一种经典的Java Web开发框架组合,用于构建企业级应用。这个组合提供了模型-视图-控制器(MVC)架构模式、对象关系映射(ORM)以及依赖注入(DI)等功能,大大简化了...

    SSH框架整合模版,非常详细实用

    SSH框架,全称为Spring、Struts2和Hibernate的集成,是Java Web开发中常见的三大开源框架的组合。这些框架各自负责应用的不同层面:Spring提供IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)功能...

    SSH详细配置文件(自己个人经验)

    - **Hibernate OpenSessionInViewFilter**:开启事务,确保在视图层操作时,Hibernate会话保持打开状态,通常需置于Struts2 Filter之前。 #### 三、常见问题与解决方案 - **包的导入冲突**:在构建SSH框架时,...

    ssh2学习笔记

    这个技术栈常被简称为SSH(Struts2、Spring、Hibernate),在Java Web开发领域有着广泛的应用。 ### SSH技术栈简介 #### Struts2 - **概述**:Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的优点...

    SSH框架ajax获取的json格式数据处理过程

    SSH 框架 Ajax 获取的 JSON 格式数据处理过程 在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维...

    SSH全注解环境搭建

    SSH框架是指Struts2、Spring、Hibernate这三种技术的组合,常被用于Java Web开发中。全注解配置相较于XML配置更加简洁,易于维护,因此在现代Web项目开发中越来越受到青睐。本文将详细介绍如何搭建一个基于全注解...

    SSH整合的简单操作

    SSH整合是指将Spring、Hibernate和Struts2这三大开源框架集成在一起,用于构建高效、模块化的Java Web应用程序。这些框架分别负责不同的职责:Spring作为IoC(Inversion of Control)容器,提供依赖注入和AOP(面向...

    搭建SSH框架步骤

    SSH框架,即Struts2、Spring和Hibernate的组合,是Java企业级应用开发中的经典选择。这个框架提供了模型-视图-控制器(MVC)架构模式,支持数据持久化、依赖注入以及业务逻辑控制。以下是对搭建SSH框架的详细步骤的...

    SSH整合文档

    SSH整合是Java开发中一种常见的框架集成方式,主要包括Spring、Struts2和Hibernate三个部分。这些框架的结合能够提供一个强大的、松耦合的MVC(Model-View-Controller)架构,便于开发复杂的Web应用程序。 **Spring...

    dwr+ssh项目

    SSH是Struts2、Hibernate和Spring的组合,是Java Web开发中的经典MVC框架。在DWR+SSH项目中,它们协同工作以实现更复杂的功能: 1. **Struts2** - 负责处理HTTP请求,提供控制器逻辑,将请求转发给相应的Action。在...

    ssh配置总结

    SSH框架是Java Web开发领域内非常流行的一种组合框架,分别由Struts2、Spring和Hibernate三个技术组成。其中Struts2负责处理Web层逻辑;Spring则主要作为业务逻辑层的容器;Hibernate则承担了持久化层的角色。本文将...

    ssh+flex配置

    SSH分别代表Struts2(一个MVC框架)、Hibernate(一个对象关系映射框架)和Spring(一个全面的企业级应用框架)。Flex是Adobe开发的富互联网应用程序(RIA)框架,主要用于创建动态、交互式的用户界面。 在SSH+Flex...

    SSH2.0配置日记

    SSH2.0 配置日记记录了 Spring 2.5、Hibernate、Struts2.1、ConnectionPool 等技术栈的集成和配置过程,涉及到了多个知识点,包括 Spring 配置、Hibernate 配置、Struts2 配置、ConnectionPool 配置、数据库配置、...

    ssh基本配置过程,是struts2的

    SSH(Struts2、Spring、Hibernate)是一个常见的Java Web开发框架组合,用于构建高效、可扩展的企业级应用。以下是SSH框架集成的基本配置过程: 1. **Hibernate配置**: - 删除`hibernate.cfg.xml`,因为我们将...

    SSH项目整合示例【OpenSessionInView】所用到的jar包

    SSH是Java Web开发中的一个流行框架组合,由Struts、Hibernate和Spring三个组件构成。这个框架集成提供了模型-视图-控制器(MVC)架构,数据持久化,以及依赖注入和事务管理等功能,大大简化了企业级应用的开发工作...

    SSH整合环境 配置

    在Java Web开发中,SSH(Struts2、Spring和Hibernate)是一个常见的集成框架,用于构建高效、可扩展的Web应用程序。SSH整合涉及三个核心组件:Struts2负责控制层,Spring处理业务逻辑和依赖注入,而Hibernate则管理...

    基于全注解方式的SSH基础框架

    ### 基于全注解方式的SSH基础框架解析 #### 概述 本文将详细介绍一个基于Struts2、Spring、Hibernate以及Hibernate Generic DAO构建的基础框架。该框架使用全注解的方式进行配置,并且提供了清晰的包结构和文档,...

    SSH搭建详细步骤

    SSH框架指的是Struts2、Spring以及Hibernate三个技术的集成。本文将详细地介绍如何从零开始搭建一个完整的SSH框架,并为初学者提供一套可参照的实践指南。 #### 二、准备工作 1. **安装Eclipse或IntelliJ IDEA**:...

Global site tag (gtag.js) - Google Analytics