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