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