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

Reply via email to