HttpServletRequest doesn't have a way to determine if the session has
been invalidated; Request does, which simplifies things in terms of
trying to finish off the request in an orderly manner after
invalidating the session.

On Thu, Mar 5, 2009 at 2:23 PM, Robert Zeigler <robe...@scazdl.org> wrote:
>
> On Mar 5, 2009, at 3/53:33 AM , Peter Stavrinides wrote:
>
>> It is sloved now after much pain, but for the befefit of everyone:
>>
>> It seems Robert had a valid point in the end, lazy loading was at least
>> half the problem (thanks very much for the tip!), the other half was that I
>> was using HttpServletRequest instead of Request, it seems the later is now
>> required in 5.1... is this intentional? I just assumed Request simply
>> shadowed HttpServletRequest, hence the simplified example provided.
>>
>
> Sort of. HttpServletRequest is, in fact, a proxy around the true
> HttpServletRequest. :)
> Request is a facade that is designed to mask the differences between
> HttpServletRequest and portlet requests.
> Although I don't "do" portlets (at the moment), I pretty much use Request
> exclusively.
>
> Robert
>
>> Cheers,
>> Peter
>>
>>
>> ----- Original Message -----
>> From: "Peter Stavrinides" <p.stavrini...@albourne.com>
>> To: "Tapestry users" <users@tapestry.apache.org>
>> Sent: Thursday, 5 March, 2009 09:59:29 GMT +02:00 Athens, Beirut,
>> Bucharest, Istanbul
>> Subject: Re: Tapestry 5.1 session invalidate misbehaving
>>
>> Thanks for the reply Robert, but that doesn't seem to be the issue, any
>> other ideas?
>>
>>
>> ----- Original Message -----
>> From: "Robert Zeigler" <robe...@scazdl.org>
>> To: "Tapestry users" <users@tapestry.apache.org>
>> Sent: Thursday, 5 March, 2009 00:45:14 GMT +02:00 Athens, Beirut,
>> Bucharest, Istanbul
>> Subject: Re: Tapestry 5.1 session invalidate misbehaving
>>
>> Try switching the order of homePage.setIsSignOut(true) and
>> request.getSession(false).invalidate();
>> It looks like the homePage is being lazily evaluated right there, and
>> the page load is failing; if you switch the order, I think you'll be
>> set.
>>
>> Robert
>>
>> On Mar 4, 2009, at 3/48:39 AM , Peter Stavrinides wrote:
>>
>>> Hi,
>>>
>>> The following code worked in all versions before 5.1, but now I get
>>> the exception listed below:
>>> @Inject
>>> private Request request;
>>>
>>> @InjectPage
>>> private Home homePage;
>>>
>>> @OnEvent(component = "signOut")
>>>        Object onEventFromSignOut() {
>>>                try {
>>>
>>>                        request.getSession(false).invalidate();
>>>                        homePage.setIsSignOut(true);
>>>                        return homePage;
>>>                } catch (Throwable e) {
>>>                        //
>>>                }
>>>                return null;
>>>        }
>>>
>>> - com.albourne.web.components.hf.Header (112)
>>> org.apache.tapestry5.ioc.internal.util.TapestryException:
>>> getAttributeNames: Session already invalidated
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:935)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .ComponentPageElementImpl
>>> .containingPageDidAttach(ComponentPageElementImpl.java:733)
>>>        at
>>> org
>>> .apache.tapestry5.internal.structure.PageImpl.attached(PageImpl.java:
>>> 144)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:55)
>>>        at
>>> $RequestPageCache_11fd1d95dc7.get($RequestPageCache_11fd1d95dc7.java)
>>>        at
>>> $RequestPageCache_11fd1d95db0.get($RequestPageCache_11fd1d95db0.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services.ComponentSourceImpl.getPage(ComponentSourceImpl.java:79)
>>>        at
>>> $
>>> ComponentSource_11fd1d95dbe.getPage($ComponentSource_11fd1d95dbe.java)
>>>        at com.albourne.web.components.hf.Header._
>>> $read_inject_page_homePage(Header.java)
>>>        at
>>> com.albourne.web.components.hf.Header.onEventFromSignOut(Header.java:
>>> 106)
>>>        at
>>> com
>>> .albourne.web.components.hf.Header.dispatchComponentEvent(Header.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .ComponentPageElementImpl
>>> .dispatchEvent(ComponentPageElementImpl.java:889)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .ComponentPageElementImpl
>>> .triggerContextEvent(ComponentPageElementImpl.java:1068)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .ComponentEventRequestHandlerImpl
>>> .handle(ComponentEventRequestHandlerImpl.java:75)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .ImmediateActionRenderResponseFilter
>>> .handle(ImmediateActionRenderResponseFilter.java:42)
>>>        at
>>> $
>>> ComponentEventRequestHandler_11fd1d95e24
>>> .handle($ComponentEventRequestHandler_11fd1d95e24.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
>>>        at
>>> $
>>> ComponentEventRequestHandler_11fd1d95e24
>>> .handle($ComponentEventRequestHandler_11fd1d95e24.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $35.handle(TapestryModule.java:2085)
>>>        at
>>> $
>>> ComponentEventRequestHandler_11fd1d95e24
>>> .handle($ComponentEventRequestHandler_11fd1d95e24.java)
>>>        at
>>> $
>>> ComponentEventRequestHandler_11fd1d95dae
>>> .handle($ComponentEventRequestHandler_11fd1d95dae.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .ComponentRequestHandlerTerminator
>>> .handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
>>>        at
>>> $
>>> ComponentRequestHandler_11fd1d95da7
>>> .handleComponentEvent($ComponentRequestHandler_11fd1d95da7.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:138)
>>>        at $Dispatcher_11fd1d95da9.dispatch($Dispatcher_11fd1d95da9.java)
>>>        at $Dispatcher_11fd1d95d9b.dispatch($Dispatcher_11fd1d95d9b.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $RequestHandlerTerminator.service(TapestryModule.java:242)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services.RequestErrorFilter.service(RequestErrorFilter.java:26)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $4.service(TapestryModule.java:760)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $3.service(TapestryModule.java:750)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:
>>> 85)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at
>>> com
>>> .albourne
>>> .web.services.PageAccessController.service(PageAccessController.java:
>>> 186)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at
>>> com.albourne.web.services.AppModule$3.service(AppModule.java:211)
>>>        at
>>> $RequestFilter_11fd1d95d99.service($RequestFilter_11fd1d95d99.java)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at org.apache.tapestry5.internal.services.CheckForUpdatesFilter
>>> $2.invoke(CheckForUpdatesFilter.java:90)
>>>        at org.apache.tapestry5.internal.services.CheckForUpdatesFilter
>>> $2.invoke(CheckForUpdatesFilter.java:81)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:
>>> 85)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:
>>> 103)
>>>        at
>>> $RequestHandler_11fd1d95d9c.service($RequestHandler_11fd1d95d9c.java)
>>>        at
>>> $RequestHandler_11fd1d95d92.service($RequestHandler_11fd1d95d92.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $HttpServletRequestHandlerTerminator.service(TapestryModule.java:194)
>>>        at
>>> org
>>> .apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
>>>        at
>>> $
>>> HttpServletRequestHandler_11fd1d95d94
>>> .service($HttpServletRequestHandler_11fd1d95d94.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>>>        at
>>> $
>>> HttpServletRequestFilter_11fd1d95d91
>>> .service($HttpServletRequestFilter_11fd1d95d91.java)
>>>        at
>>> $
>>> HttpServletRequestHandler_11fd1d95d94
>>> .service($HttpServletRequestHandler_11fd1d95d94.java)
>>>        at org.apache.tapestry5.services.TapestryModule
>>> $2.service(TapestryModule.java:712)
>>>        at
>>> $
>>> HttpServletRequestHandler_11fd1d95d94
>>> .service($HttpServletRequestHandler_11fd1d95d94.java)
>>>        at
>>> $
>>> HttpServletRequestHandler_11fd1d95d8f
>>> .service($HttpServletRequestHandler_11fd1d95d8f.java)
>>>        at
>>> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:
>>> 127)
>>>        at
>>> org
>>> .apache
>>> .catalina
>>> .core
>>> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
>>> 235)
>>>        at
>>> org
>>> .apache
>>> .catalina
>>> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>        at
>>> org
>>> .apache
>>> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
>>> 233)
>>>        at
>>> org
>>> .apache
>>> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
>>> 175)
>>>        at
>>> org
>>> .apache
>>> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>        at
>>> org
>>> .apache
>>> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>        at
>>> org
>>> .apache
>>> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
>>> 109)
>>>        at
>>> org
>>> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
>>> 286)
>>>        at
>>> org
>>> .apache.coyote.http11.Http11Processor.process(Http11Processor.java:
>>> 844)
>>>        at org.apache.coyote.http11.Http11Protocol
>>> $Http11ConnectionHandler.process(Http11Protocol.java:583)
>>>        at org.apache.tomcat.util.net.JIoEndpoint
>>> $Worker.run(JIoEndpoint.java:447)
>>>        at java.lang.Thread.run(Thread.java:619)
>>> Caused by: java.lang.IllegalStateException: getAttributeNames:
>>> Session already invalidated
>>>        at
>>> org
>>> .apache
>>> .catalina
>>> .session.StandardSession.getAttributeNames(StandardSession.java:1050)
>>>        at
>>> org
>>> .apache
>>> .catalina
>>> .session
>>> .StandardSessionFacade.getAttributeNames(StandardSessionFacade.java:
>>> 120)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal.services.SessionImpl.getAttributeNames(SessionImpl.java:76)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .AbstractSessionPersistentFieldStrategy
>>> .gatherFieldChanges(AbstractSessionPersistentFieldStrategy.java:54)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .services
>>> .PersistentFieldManagerImpl
>>> .gatherChanges(PersistentFieldManagerImpl.java:62)
>>>        at
>>> $
>>> PersistentFieldManager_11fd1d95dd9
>>> .gatherChanges($PersistentFieldManager_11fd1d95dd9.java)
>>>        at
>>> org
>>> .apache
>>> .tapestry5.internal.structure.PageImpl.getFieldChange(PageImpl.java:
>>> 162)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .InternalComponentResourcesImpl
>>> .getFieldChange(InternalComponentResourcesImpl.java:158)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .InternalComponentResourcesImpl
>>> .hasFieldChange(InternalComponentResourcesImpl.java:168)
>>>        at com.albourne.web.pages.Home.containingPageDidAttach(Home.java)
>>>        at
>>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl
>>> $1.run(ComponentPageElementImpl.java:74)
>>>        at
>>> org
>>> .apache
>>> .tapestry5
>>> .internal
>>> .structure
>>> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:920)
>>>        ... 67 more
>>>
>>> Can someone please point out what has changed and how I might be
>>> able to fix this... it seems that Tapestry is trying to set/get
>>> attributes from a stale session, but it should really create a new
>>> one, I have tried all sorts of workarounds including forcing
>>> creation of a new session, just returning the page, using a
>>> redirect, constructing a link object but nothing seems to work.
>>>
>>> Tested using Java 6 - Tomcat / Jetty on Ubuntu.
>>>
>>> Thanks,
>>> Peter
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to