Yeah, you'd definitely have to do it with a try-finally block > -----Original Message----- > From: Pat Lightbody [mailto:[EMAIL PROTECTED] > Sent: Wednesday, July 16, 2003 11:23 AM > To: [EMAIL PROTECTED] > Subject: Re: [OS-webwork] WebWork2 Action Chains and Interceptors > > > This is slightly dangerous though, since if the second action > throws an exception or for some reason doesn't execute, > you've got a TX left open (unless of course you're using > Cameron's ContainerInterceptor). > > -Pat > > ----- Original Message ----- > From: "Jason Carreira" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, July 15, 2003 1:22 PM > Subject: RE: [OS-webwork] WebWork2 Action Chains and Interceptors > > > Ok, let me try again. Here's the order of execution: > > Action1 Interceptors - before > > Action1 - execute > > Result -> ActionChainingResult > > Action2 Interceptors - before > > Action2 - execute > > Result -> JSP > > Action2 Interceptors - after > > Action1 Interceptors - after > > Now if you have the TransactionInterceptor applied to BOTH > Actions, and the before does basically this: > > if (getThreadLocalTransaction() == null) { > > Transaction tx = .... > setThreadLocalTransaction(tx); > > } else { > > commitTransaction(); > Transaction tx = .... > setThreadLocalTransaction(tx); > > } > > and the after does this: > > if (getThreadLocalTransaction() != null) { > > commitTransaction(); > > } > > protected void commitTransaction() { > > getThreadLocalTransaction().commit(); > setThreadLocalTransaction(null); > > } > > then you should get the behavior you want. > > Action1 Interceptors - before will create a transaction > > Action2 Interceptors - before will commit the outside > transaction and create a new one > > Action2 Interceptors - after will commit the second transaction > > Action1 Interceptors - after will do nothing > > You could break this into 2 Interceptors if you want, or > parameterize the TransactionInterceptor for different > behavior (commit outer transaction? ignore outer transaction? etc) > > Jason > > -----Original Message----- > From: Cameron Braid [mailto:[EMAIL PROTECTED] > Sent: Tuesday, July 15, 2003 4:02 PM > To: [EMAIL PROTECTED] > Subject: RE: [OS-webwork] WebWork2 Action Chains and Interceptors > > > I am using a threadlocal for both the session and transaction objects. > > The issue - which you seem to have missed - is that the > chained FROM action's interceptors are executed around the > chained TO action. > > This happens because the chain is implemented as a result > which is a part of the chained FROM action's invocation. > > I will just adopt object orientation once again .. how about > that eh ! and use a superclass to implement the transaction > container. > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: VM Ware > With VMware you can run multiple operating systems on a > single machine. WITHOUT REBOOTING! Mix Linux / Windows / > Novell virtual machines at the same time. Free trial click > here: http://www.vmware.com/wl/offer/345/0 > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork >
------------------------------------------------------- This SF.net email is sponsored by: VM Ware With VMware you can run multiple operating systems on a single machine. WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork