You can plugin to the webrequest servicer pipeline. > Ummm... you could do that too. You're correct that it would avoid the > visit-from-session inelegant bit. It would be conceptually similar to > the servlet filter approach. The downside would be that custom Engine > classes are frowned upon as Tapestry goes forward. I'm not sure there > is an Engine.getVisit() in 4.1. > > None of the approaches is perfect since Tapestry doesn't provide a > built-in end-of-request hook. Well, there is a call to > monitor.serviceEnd() that you could use without subclassing Engine. > > > Dobrin Ivanov wrote: >> Hi, >> Thanks Bryan, this looks like a hack:) >> >> What do you think if I override the Engine's method: >> >> public void service(WebRequest request, WebResponse >> response) throws IOException { >> super.service(request, response); >> // insert code here >> } >> >> Is this a bad approach? >> >> >> --- Bryan Lewis <[EMAIL PROTECTED]> wrote: >> >> >>> It sounds like a servlet listener method could work >>> for you. Or a >>> servlet filter as in the previous suggestion. Both >>> would give you a >>> hook into the end-of-request, and you can get to the >>> Visit via the >>> session. Here's a listener approach. >>> >>> >>> public class EventListener implements >>> ServletRequestListener >>> { >>> public void >>> requestInitialized(ServletRequestEvent sre) { >>> // This method might not need to do >>> anything. >>> } >>> >>> public void requestDestroyed(ServletRequestEvent >>> sre) >>> { >>> // Call a static method in your >>> thread-storage class to get your >>> data. >>> >>> // The slightly messy part is getting the >>> Visit from the session. >>> HttpSession session = >>> sre.getServletRequest().getSession(false); >>> String visitKey = "state:" + appName + >>> ":visit"; >>> Visit visit = (Visit) >>> session.getAttribute(visitKey); >>> } >>> } >>> >>> In your web.xml: >>> >>> <listener> >>> >>> >>> >> <listener-class>your.package.EventListener</listener-class> >> >>> </listener> >>> >>> >>> Dobrin Ivanov wrote: >>> >>>> I have designed some small API in order to provide >>>> >>> the >>> >>>> session persistance of the presentation layer >>>> (Tapestry - Visit object/HttpSession) to the model >>>> layer (in order to be able to cache some session >>>> related stuff without being aware of how the above >>>> layer is doing it). So the data is attached to the >>>> thread and at the end of the request cycle I want >>>> >>> to >>> >>>> save it into the Visit object. >>>> >>>> --- Martin Strand <[EMAIL PROTECTED]> wrote: >>>> >>>> >>>> >>>>> Exactly what do you need this for? >>>>> If you don't need any Tapestry logic, there might >>>>> >>> be >>> >>>>> other ways to do it - >>>>> like a servlet filter or a threaded service that >>>>> implements Discardable. >>>>> >>>>> On Tue, 19 Sep 2006 21:58:20 +0200, Jesse Kuhnert >>>>> <[EMAIL PROTECTED]> >>>>> wrote: >>>>> >>>>> >>>>> >>>>>> It might not be super fun to learn, but I think >>>>>> >>>>>> >>>>> the "tapestry" way of >>>>> >>>>> >>>>>> doing >>>>>> this would be to contribute something to the >>>>>> >>>>>> >>>>> WebRequestServicerPipeline >>>>> >>>>> >>>>>> so >>>>>> that you know definitively when the cycle ends >>>>>> >>>>>> >>>>> regardless of what >>>>> >>>>> >>>>>> services/engines are involved.. >>>>>> >>>>>> >>>>>> >>>>>> >> http://tapestry.apache.org/tapestry4/tapestry/hivedocs/config/tapestry.request.WebRequestServicerPipeline.html >> >>>> >>>> >>>>>> On 9/19/06, Dobrin Ivanov >>>>>> >>>>>> >>>>> <[EMAIL PROTECTED]> wrote: >>>>> >>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I want some advise of which is the best way to >>>>>>> >>>>>>> >>>>> catch >>>>> >>>>> >>>>>>> the end of the request cycly. I have tried it >>>>>>> >>>>>>> >>>>> using a >>>>> >>>>> >>>>>>> PageDetachListener, but the problem is that >>>>>>> >>>>>>> >>>>> sometimes >>>>> >>>>> >>>>>>> there is more than one page involved into the >>>>>>> >>>>>>> >>>>> request >>>>> >>>>> >>>>>>> cycle and then I get more than one invocation >>>>>>> >>> on >>> >>>>>>> >>>>>>> >>>>> the >>>>> >>>>> >>>>>>> pageDetached(...). >>>>>>> So I'm wondering if overriding the Engine's >>>>>>> service(...) method is the best place? >>>>>>> >>>>>>> Thanks and best regards, >>>>>>> Dobrin >>>>>>> >>>>>>> >>>>> >>>>> >> --------------------------------------------------------------------- >> >>>> >>>> >>>>> To unsubscribe, e-mail: >>>>> [EMAIL PROTECTED] >>>>> For additional commands, e-mail: >>>>> [EMAIL PROTECTED] >>>>> >>>>> >>>>> >>>>> >>>> __________________________________________________ >>>> Do You Yahoo!? >>>> Tired of spam? Yahoo! Mail has the best spam >>>> >>> protection around >>> >>>> http://mail.yahoo.com >>>> >>>> >>>> >> --------------------------------------------------------------------- >> >>>> To unsubscribe, e-mail: >>>> >>> [EMAIL PROTECTED] >>> >>>> For additional commands, e-mail: >>>> >>> [EMAIL PROTECTED] >>> >>>> >>>> >>> >> >> >> __________________________________________________ >> Do You Yahoo!? >> Tired of spam? Yahoo! Mail has the best spam protection around >> http://mail.yahoo.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > >
James Carman, President Carman Consulting, Inc. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]