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