|
From: <jue...@we...> - 2003-12-09 20:27:51
|
BTW, that didn't affect normal HibernateTransactionManager transactions =
at all, just ones with pre-bound Session - for which =
OpenSessionInViewFilter is the first practical use case. And thanks for =
early-adopting the filter! :-)
=20
Mike, please update from CVS too if you're trying the =
OpenSessionInViewFilter!
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von j=FCrgen h=F6ller [werk3AT]
Gesendet: Di 09.12.2003 21:14
An: Matthew E. Porter
Cc: spr...@li...
Betreff: Re: [Springframework-developer] OpenSessionInViewFilter
Matthew,
It's indeed a bug: I've just tried a few scenarios, and it doesn't work =
with multiple transactions within one pre-bound Session. Fortunately, it =
was easy enough to find and fix: HibernateTransactionManager didn't =
properly reset the transaction object of a pre-bound Session, therefore =
the next transaction didn't open a new Hibernate transaction because it =
thought there was already an active one - thus, no flushing.
It works nicely for me now, for example with Petclinic. I hope the =
public CVS server shows the changed HibernateTransactionManager source =
file promptly.
Juergen
________________________________
Von: Matthew E. Porter [mailto:ma...@me...]
Gesendet: Di 09.12.2003 20:56
An: j=FCrgen h=F6ller [werk3AT]
Betreff: Fwd: [Springframework-developer] OpenSessionInViewFilter
Do you think this is a bug with Spring?
Cheers,
matthew
Begin forwarded message:
From: Matthew E. Porter <ma...@me...>
Date: December 9, 2003 7:35:04 AM CST
To: spr...@li...
Subject: Re: [Springframework-developer] OpenSessionInViewFilter
Reply-To: spr...@li...
Juergen:
FWIW: I am using the OpenSessionInViewFilter with Webwork2.
Anyways, when the filter is applied, flushing never happens even =
when using the transactionproxy factory. If I remove the filter from the =
web.xml, everything works perfectly.
Any guesses?
Cheers,
matthew
On Dec 9, 2003, at 7:03 AM, j=FCrgen h=F6ller [werk3AT] wrote:
Matthew,
TransactionProxyFactoryBean can just be used to proxy =
Spring-managed Java objects: in the web case, at best a whole =
Controller. The view rendering is initiated by DispatcherServlet, =
delegating to View.render. There is no single entry point in form of a =
Spring-managed bean to catch the whole request processing. But there is =
the HandlerInterceptor facility to intercept that processing at various =
points.
It's important to stress that =
OpenSessionInViewInterceptor for Spring's web MVC respectively =
OpenSessionInViewFilter for any web processing still lets Spring-managed =
business methods perform their transactions as usual. The =
interceptor/filter just pre-binds a Hibernate Session that all =
transactions will use to the current thread, and which will stay open =
until view rendering has been completed.
Your TransactionProxyFactoryBean setup should work, with =
or without OpenSessionInViewFilter. Note that you need to access the =
"OSUserDao" bean to get transactional behavior, not the =
"OSUserDaoTarget" directly. And you need to get the method pattern in =
the transactionAttributes right - in the simplest case, specify:
<property name=3D"transactionAttributes">
<props>
<prop key=3D"*">PROPAGATION_REQUIRED</prop>
</props>
</property>
That should open transactions for all methods, not just =
ones whose names start with "find" etc. And don't specify "readOnly" for =
transactions that should persist changes: "readOnly" will switch the =
underlying Hibernate Sessions to FLUSH_NEVER. A good way is to start =
with the general pattern above and go more fine-granular when you've =
managed to make the general case work.
Juergen
-----Original Message-----
From: Matthew E. Porter [mailto:ma...@me...]
Sent: Tuesday, December 09, 2003 1:51 PM
To: j=FCrgen h=F6ller [werk3AT]
Subject: Re: [Springframework-developer] =
OpenSessionInViewFilter
Juergen:
Here is what I currently have that is not working.
<bean id=3D"OSUserDaoTarget"
=
class=3D"com.metissian.security.principal.provider.osuser.configuration.O=
S
UserManagerDAO">
<property name=3D"sessionFactory">
<ref local=3D"MetalSessionFactory"/>
</property>
</bean>
<bean id=3D"OSUserDao"
=
class=3D"org.springframework.transaction.interceptor.TransactionProxyFact=
o
ryBean">
<property name=3D"transactionManager">
<ref local=3D"MetalTransactionManager"/>
</property>
<property name=3D"target">
<ref local=3D"OSUserDaoTarget"/>
</property>
<property name=3D"transactionAttributes">
<props>
<prop key=3D"find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key=3D"delete*">PROPAGATION_REQUIRED</prop>
<prop key=3D"update*">PROPAGATION_REQUIRED</prop>
<prop key=3D"save*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
For some reason, I believed that wrapping an object in a
TransactionProxyFactoryBean provided the =
transactionality you talked
about. Am I wrong?
Cheers,
matthew
On Dec 9, 2003, at 12:45 AM, j=FCrgen h=F6ller [werk3AT] =
wrote:
Matthew,
You should either use Spring-managed =
transactions (via
HibernateTransactionManager or =
JtaTransactionManager), which will
automatically flush a Session at transaction =
commit, or set
HibernateTemplate's/HibernateInterceptor's =
"flushMode" property to
FLUSH_EAGER (respectively "flushModeName" to =
"FLUSH_EAGER" in a
textual bean definition). This will guarantee to =
flush as early as
possible, not after view rendering: After all, a =
view should not
modify the model, so there should be no need to =
flush afterwards.
Juergen
________________________________
Von: =
spr...@li... im Auftrag
von Matthew E. Porter
Gesendet: Di 09.12.2003 02:20
An: =
spr...@li...
Betreff: [Springframework-developer] =
OpenSessionInViewFilter
I am attempting to use the =
OpenSessionInViewFilter. According to the
javadoc, the session is not flush at the end of =
the filter. Therefore,
without overriding the closeSession() method in =
the filter, how do I
get the session to flush? I am currently =
accessing DAOs wrapped as a
ProxyFactoryBean with a HibernateInterceptor.
Please help!
Cheers,
matthew
=
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux =
Tutorials.
Become an expert in LINUX or just sharpen your =
skills. Sign up for
IBM's
Free Linux Tutorials. Learn everything from the =
bash shell to sys
admin.
Click now! =
http://ads.osdn.com/?ad_id=3D1278&alloc_id=3D3371&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
=
https://lists.sourceforge.net/lists/listinfo/springframework-developer
=
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux =
Tutorials.
Become an expert in LINUX or just sharpen your =
skills. Sign up for
IBM's
Free Linux Tutorials. Learn everything from the =
bash shell to sys
admin.
Click now! =
http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
=
https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills. =
Sign up for IBM's
Free Linux Tutorials. Learn everything from the bash =
shell to sys admin.
Click now! =
http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
=
https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills. Sign up =
for IBM's
Free Linux Tutorials. Learn everything from the bash shell to =
sys admin.
Click now! =
http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
=
https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills. Sign up for =
IBM's
Free Linux Tutorials. Learn everything from the bash shell to sys =
admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id371&op=3Dick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|