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

Reply via email to