I would put the cleanup in a try { } finally { } inside your servlet's doGet().
On Mon, Dec 7, 2009 at 10:29 AM, Inge Solvoll <inge.tapes...@gmail.com> wrote: > Ok, let's see if I've understood this correctly: > > Tapestry has already invoked Registry.cleanupThread() for the current > (ignored) request before passing it on to some other servlet/resource. This > cleanup removed my Request/Response objects. Now when I put new > Request/Response instances back in the game with my mod, I need to perform > cleanup once more because Tapestry already did and gave away control. It no > longer knows when to clean up. > > Right? > > So now the only thing left to do is to find out where to put my cleanup > invocation. Hints anyone? I know I should be able to figure it out myself, > and I will try, but no harm done if anyone beats me to it :) > > Thanks for great help so far! > Inge > > On Mon, Dec 7, 2009 at 5:58 PM, Howard Lewis Ship <hls...@gmail.com> wrote: > >> On Mon, Dec 7, 2009 at 7:11 AM, Inge Solvoll <inge.tapes...@gmail.com> >> wrote: >> > Found something that seems to work by reading carefully through >> > TapestryModule.java, see code below. To me, it seems strange that I have >> to >> > do this. Do any of you guys see anything wrong with this? >> > >> >> Since it's not a Tapestry-related request, control has passed out of >> the TapestryFilter and on to other servlets within the web >> application. Tapestry has already cleaned up the RequestGlobals >> object, a per-thread service that stores the HttpServletRequest and >> (Tapestry) Request objects. >> >> You want to make sure to invoke the Registry.cleanupThread() method at >> the end of your request. >> >> I've been planning to add a simpler alternative to >> SessionStateObjects, an annotation that simply says "store this value >> in the session with this explicit key", to make coordinating a T5 app >> with a legacy app simpler. >> >> >> > public void >> > >> contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter> >> > configuration, @Inject @Symbol(SymbolConstants.CHARSET) final String >> > applicationCharset, @Primary final SessionPersistedObjectAnalyzer >> analyzer, >> > final RequestGlobals requestGlobals) { >> > >> > HttpServletRequestFilter storeRequestResponse = new >> > HttpServletRequestFilter() { >> > >> > public boolean service(HttpServletRequest servletRequest, >> > HttpServletResponse servletResponse, HttpServletRequestHandler handler) >> > throws IOException { >> > Request request = new RequestImpl(servletRequest, >> > applicationCharset, analyzer); >> > Response response = new ResponseImpl(servletResponse); >> > requestGlobals.storeRequestResponse(request, response); >> > return handler.service(servletRequest, servletResponse); >> > } >> > }; >> > >> > configuration.add("StoreRequestResponse", storeRequestResponse, >> > "before:*"); >> > } >> > >> > >> > On Mon, Dec 7, 2009 at 2:35 PM, Inge Solvoll <inge.tapes...@gmail.com >> >wrote: >> > >> >> Thanks! >> >> >> >> Didn't work though. Tried running >> >> requestGlobals.storeServletRequestResponse before asm.get(...), still >> same >> >> error because requestGlobals.getRequest() is still null after storing >> >> httprequest. >> >> >> >> I discovered that requestGlobals.getHTTPServletRequest() returns a live >> and >> >> working request, while requestGlobals.getRequest() returns null. I also >> put >> >> a breakpoint in TapestryModule "StoreIntoGlobals", and it is run before >> my >> >> code. >> >> >> >> So, the Request and Response properties of requestGlobals aren't >> populated >> >> when using the Registry from another servlet i think. Am I right? Is >> there >> >> any way to make this work? >> >> >> >> >> >> >> >> >> >> On Mon, Dec 7, 2009 at 1:16 PM, Thiago H. de Paula Figueiredo < >> >> thiag...@gmail.com> wrote: >> >> >> >>> Em Mon, 07 Dec 2009 08:31:44 -0200, Inge Solvoll < >> inge.tapes...@gmail.com> >> >>> escreveu: >> >>> >> >>> Hi! >> >>>> >> >>> >> >>> Hi! >> >>> >> >>> >> >>> >> >>>> Caused by: java.lang.NullPointerException >> >>>> at $Request_12568a717d3.getSession($Request_12568a717d3.java) >> >>>> at $Request_12568a717a6.getSession($Request_12568a717a6.java) >> >>>> at >> >>>> >> org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.getSession(SessionApplicationStatePersistenceStrategy.java:38) >> >>>> >> >>> >> >>> It looks like the Request wasnt. Try getting the RequestGlobals service >> >>> and invoking the storeServletRequestResponse() method before you use >> the >> >>> ApplicationStateManager. >> >>> >> >>> -- >> >>> Thiago H. de Paula Figueiredo >> >>> Independent Java, Apache Tapestry 5 and Hibernate consultant, >> developer, >> >>> and instructor >> >>> Owner, software architect and developer, Ars Machina Tecnologia da >> >>> Informação Ltda. >> >>> http://www.arsmachina.com.br >> >>> >> >>> --------------------------------------------------------------------- >> >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> >>> For additional commands, e-mail: users-h...@tapestry.apache.org >> >>> >> >>> >> >> >> > >> >> >> >> -- >> Howard M. Lewis Ship >> >> Creator of Apache Tapestry >> >> The source for Tapestry training, mentoring and support. Contact me to >> learn how I can get you up and productive in Tapestry fast! >> >> (971) 678-5210 >> http://howardlewisship.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org