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

Reply via email to