I would suggest looking at the JPA demo code in liftweb under the sites directory. The JPA.scala and Model.scala have some code in there for handling transactions. There's also a wrapEM method that can help with catching and handling exceptions. I have a branch underway that improves on the code a bit (wip-dcb-jpa-jta), but I'm stuck at the moment because of a weird issue with Jetty JNDI. I may end up just merging some of those changes back into trunk since it looks like it may be a while before that's resolved.
Derek On Fri, Dec 19, 2008 at 8:13 PM, Oliver Lambert <[email protected]> wrote: > Ha, very observant - I am relying on it to commit or rollback or do > nothing. > I note your recommendation, but I'd rather not have transaction support > code littered around. > For my application, I want a transaction lazily created and closed after > each request, if it was created. > If what I am doing is bad design or coding, Im willing to change it. > > Oliver > > On 20/12/2008, at 1:12 AM, Derek Chen-Becker wrote: > > What kind of error are you getting when the EM closes? As long as you're > not relying on the EM.close to commit your transaction (something I'd > recommend against anyway) then there really shouldn't be any errors at this > point. > > Derek > > On Thu, Dec 18, 2008 at 10:00 PM, Oliver <[email protected]> wrote: > >> >> I started on that path, and thought I could redirect with something like >> Full(<span> "some html that redirects to the error page"... >> </span>).asInstanceOf[T] >> It feels like a big hack, even if I could get it working and I was a >> little worried about creating >> a redirection loop. >> I've created a static html error page and call it from web.xml for now >> - it'll have to do for now. >> >> On Fri, Dec 19, 2008 at 11:09 AM, David Pollak >> <[email protected]> wrote: >> > I'd put a try/finally around the EM.closeEM call so that it does not >> impact >> > the stuff that's being rendered to the browser. Don't let the exception >> in >> > the finally block propogate. >> > >> > On Thu, Dec 18, 2008 at 1:58 PM, Oliver <[email protected]> wrote: >> >> >> >> I was redirecting to an error page using >> >> LiftRules.logAndReturnExceptionToBrowser, but when I use a LoanWrapper >> >> to close a EntityManager and an error occurs when closing the entity >> >> manager, LiftRules.logAndReturnExceptionToBrowser doesn't appear to >> >> redirect to my error page. Can anyone think of a work around? >> >> >> >> >> >> // Output a simple error to the user. Link the error message >> >> to the screen via the current datetime >> >> LiftRules.logAndReturnExceptionToBrowser = { >> >> RedirectResponse("/error); >> >> } >> >> >> >> // Set up a LoanWrapper to automatically close a EntityManager >> >> if its open >> >> S.addAround(List( >> >> new LoanWrapper { >> >> def apply[T] (f : => T): T = { >> >> try { >> >> f >> >> } finally { >> >> EM.closeEM // close if open >> >> } >> >> } >> >> })) >> >> >> >> } >> >> >> >> >> > >> > >> > >> > -- >> > Lift, the simply functional web framework http://liftweb.net >> > Collaborative Task Management http://much4.us >> > Follow me: http://twitter.com/dpp >> > Git some: http://github.com/dpp >> > >> > > >> > >> >> >> > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
