`
longxingtx520
  • 浏览: 17865 次
  • 性别: 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!到此问题解决。

 

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

 

分享到:
评论

相关推荐

    OpenSessionInViewFilter

    OpenSessionInViewFilter个人学习总结

    关于OpenSessionInViewFilter的学习

    NULL 博文链接:https://yanzhenwei.iteye.com/blog/1701164

    OA项目SSH整合框架

    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter &lt;filter-name&gt;OpenSessionInView *.do 2,LazyInitializationException异常说明 1,对于集合属性...

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

    SSH项目整合示例【OpenSessionInView】所用到的jar包 包含Struts + Hibernate + Spring所有jar及其依赖的jar

    S2SH集成 案例

    该案例实现了一个简单的登录功能,但里面将S2SH集成的所有配置信息都添加进去了。 如,OpenSessionInViewFilter、声明式事务、三层等等

    jar包(struts2.0.8+spring2.0+hibernate3.2)

    struts2.0.8+spring2.0+hibernate3.2 jar包

    Sping 事务管理.doc

    OpenSessionInViewFilter解决Web应用程序的问题

    struts+spring+hibernate整合

    Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...

    spring_demo:Spring MVC示范项目

    Spring MVC Hibernate Demo Hibernate 配置 数据库实体必须设置以下注解 @Entity ... &lt;filter&gt;org.springframework.orm.hibernate4.support.OpenSessionInViewFilter &lt;param&gt;flushMode&lt;/param-nam

    Mac Mysql数据库中文乱码问题解决

    如:在使用Java中得SSH框架时,我们需要在web.xml文件中配置编码的filter,具体代码是: &lt;span xss=removed&gt;&lt;!-- 表单处理乱码,必须在OpenSessionInViewFilter的filter之前 --&gt; &lt;filter&gt;CharacterFilter ...

    spring_note.rar_inversion_spring concept

    课程内容 面向接口(抽象)编程的概念与好处 IOC/DI的概念与好处 inversion of control dependency injection AOP的概念与好处 ...opensessionInviewfilter(记住,解决什么问题,怎么解决) Spring JDBC

    SPRING API 2.0.CHM

    All Classes ...Cglib2AopProxy.SerializableNoOp CglibSubclassingInstantiationStrategy ChainedExceptionListener ChainedPersistenceExceptionTranslator CharacterEditor CharacterEncodingFilter ...

Global site tag (gtag.js) - Google Analytics