spring2.5 struts2 hibernate3 时事务配置注意的问题 openSessionInViewFilter web.xml
2011-01-01 14:59
627 查看
spring +struts + hibernate
时事务配置注意的问题
当
spring
里配置有
<
aop:aspectj-autoproxy
/>
也就是对
spring
里配置的
bean
生成代理(
java
反射机制和动态代理),以便切面通知
当连接点(方法的执行)退出时,自动代理的对象将会关闭
session
,也就是不能初始化代理,会出现这样的情况比如:
hibernate
里配置对象关联,当在连接点加载了一个对象,然后在连接点之后访问另一个对象时(除
ID
),
spring
就会抛出:不能初始化代理,
no session ,
为了解决这样的问题,
spring
引入了
openSessionInViewFilter
过滤器,在
web.xml
配置如下:
<
filter
>
<
filter-name
>
openSessionInViewFilter
</
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
>
openSessionInViewFilter
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
注意其中的:
<
param-name
>
singleSession
</
param-name
>
<
param-value
>
false
</
param-value
>
配置,默认这个设置是
true,
也就是一个
request
的开始到一个
response
的结束,只用一个
session
来处理
,
而我们配置的切面,只是到
service
层,并没有到
aciton(
注意,我们的
action
通常也是配置为
spring
的
bean),
而在
service
层动态代理已经是关闭了,这样,当你要访问对象关联里其他对象的属性时,
spring
同样会抛出:不能初始化代理,
no session
,这样我们只要把上面的
true
改为
false
,当访问关联对象时,
spring
会打开新的一个
session
来处理,这样也不会对我们的
service
层里的事务造成影响,我们的
service
同样还是使用相同的
session,
我在
hibernate.properties
里的配置是:
hibernate.connection.release_mode
after_transaction
时事务配置注意的问题
当
spring
里配置有
<
aop:aspectj-autoproxy
/>
也就是对
spring
里配置的
bean
生成代理(
java
反射机制和动态代理),以便切面通知
当连接点(方法的执行)退出时,自动代理的对象将会关闭
session
,也就是不能初始化代理,会出现这样的情况比如:
hibernate
里配置对象关联,当在连接点加载了一个对象,然后在连接点之后访问另一个对象时(除
ID
),
spring
就会抛出:不能初始化代理,
no session ,
为了解决这样的问题,
spring
引入了
openSessionInViewFilter
过滤器,在
web.xml
配置如下:
<
filter
>
<
filter-name
>
openSessionInViewFilter
</
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
>
openSessionInViewFilter
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
注意其中的:
<
param-name
>
singleSession
</
param-name
>
<
param-value
>
false
</
param-value
>
配置,默认这个设置是
true,
也就是一个
request
的开始到一个
response
的结束,只用一个
session
来处理
,
而我们配置的切面,只是到
service
层,并没有到
aciton(
注意,我们的
action
通常也是配置为
spring
的
bean),
而在
service
层动态代理已经是关闭了,这样,当你要访问对象关联里其他对象的属性时,
spring
同样会抛出:不能初始化代理,
no session
,这样我们只要把上面的
true
改为
false
,当访问关联对象时,
spring
会打开新的一个
session
来处理,这样也不会对我们的
service
层里的事务造成影响,我们的
service
同样还是使用相同的
session,
我在
hibernate.properties
里的配置是:
hibernate.connection.release_mode
after_transaction
相关文章推荐
- xFire在使用Spring2.5,设定文件配置记述中需要注意的问题
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- Spring2.5整合Hibernate3.0中使用XML以tx来配置事务管理。
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- eclipse配置Struts2、Hibernate3、Spring2.5范例
- Spring3.x_Struts2.x_Hibernate3.x整合之声明式事务配置
- eclipse配置Struts2、Hibernate3、Spring2.5范例
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- struts2,hibernate4,spring3配置时有关问题汇总及解决方法
- struts + spring + hibernate整合事务配置的问题(请教高手)
- struts2,hibernate4,spring3,javaee6配置问题
- spring配置hibernate事务aop不生效的问题
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- struts2,hibernate4,spring3配置时问题汇总及解决办法(架包导入问题)
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- 【Spring】spring-mvc hibernate druid jdbc等数据源事务配置详解(解决注解事务不生效问题)
- struts2,hibernate4,spring3配置时问题汇总及解决办法(架包导入问题)
- spring2.5 hibernate 配置最少的事务处理(声明切面)
- struts2,spring 2.5,hibernate3.2 的配置文件模版