You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "matthew c. mead" <m-...@goof.com> on 2005/02/23 21:17:36 UTC

engine restart fails on some pages?

Following the logout link thread, I decided to implement one.

In my BaseAuthenticatedPage, I put the following code:

  public final void logout(IRequestCycle cycle) {
    // MCM TODO record logout event in audit log
    IEngineServiceView engine = (IEngineServiceView) getEngine();
    try {
      engine.restart(getRequestCycle());
    } catch (IOException e) {
      logger.error("Caught IOException trying to restart engine.", e);
    }
  }

On some pages, this works.  On others, I get the following exception.  
Any ideas?

Thanks!


-matt

Exception:

[30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
exception page.
org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
Session already invalidated
        at 
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382)
        at 
org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732)
        at 
org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459)
        at 
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914)
        at 
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197)
        at 
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:552)
Caused by: java.lang.IllegalStateException: getCreationTime: Session 
already invalidated
        at 
org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920)
        at 
org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77)
        at 
org.apache.tapestry.request.RequestContext.write(RequestContext.java:751)
        at 
org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062)
        at 
org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624)
        at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
        at 
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
        at 
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
        at 
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
        ... 31 more



-- 
matthew c. mead

http://www.goof.com/

Re: engine restart fails on some pages?

Posted by Bryan Lewis <br...@maine.rr.com>.
No.  We use this method all the time, after simple logouts, and it
invalidates only the current session.

You're right, the docs are confusing.  The sentence you quote is in
IEngineServiceView.  But the implementing class AbstractEngine "overrides"
that with a much milder comment, "Invalidates the session, then redirects
the client web browser to the servlet's prefix, starting a new visit."


----- Original Message ----- 
From: "david joffrin" <da...@hotmail.com>
To: <ta...@jakarta.apache.org>
Sent: Thursday, February 24, 2005 4:15 AM
Subject: Re: engine restart fails on some pages?


> Hi,
>
> I followed with some attention the trace of this thread and finally looked
> at the restart method description. It is stated there:
> "Invoked to restart the application from start; this most frequently
follows
> some kind of catastrophic failure. This will invalidate any HttpSession
and
> force a redirect to the application servlet (i.e., invoking the home
service
> in a subsequent request cycle)."
>
> What shall I understand by that? All currently HttpSessions open are
> destroyed? Does it mean that if I apply that for logout feature, all users
> currently logged in will be logged out if one logs out?
>
> Thanks.
> David Joffrin
> MSN: david_joffrin@hotmail.com
>
>
>
>
> >From: "matthew c. mead" <m-...@goof.com>
> >Reply-To: "Tapestry users" <ta...@jakarta.apache.org>
> >To: Tapestry users <ta...@jakarta.apache.org>
> >Subject: Re: engine restart fails on some pages?
> >Date: Wed, 23 Feb 2005 17:24:53 -0500
> >
> >Paul,
> >
> >Thanks for the detailed information.  I'll look into overriding the
> >RestartService - I'm not sure what that entails right now.  I may just
> >switch to getEngine().setVisit(null); and then throw new
> >PageRedirectException("Home");
> >
> >I got the idea to do the casting here:
>
>http://wiki.apache.org/jakarta-tapestry/FrequentlyAskedQuestions/LogoutLink
> >
> >Perhaps it needs to be updated - I'd offer to do it, but it is listed as
an
> >immutable page.
> >
> >Thanks again!
> >
> >
> >
> >
> >-matt
> >
> >
> >Paul Ferraro wrote:
> >
> >>I see what's going on here...
> >>
> >>You want to perform some action upon logout (e.g. logging to an audit
> >>trail).  The best way to do this is to override the RestartService and
add
> >>this behavior so that all restart requests will be audited in this way
and
> >>use the ServiceLink component to trigger it.
> >>
> >>You should *not* cast the engine to an IEngineServiceView inside your
> >>listener.  The restart(cycle) method was not intended to be called from
an
> >>IActionListener.  There is a reason why the IEngineServiceView interface
> >>is not exposed to IActionListeners - in other words... there is a reason
> >>why the restart(cycle) method is not exposed from the IEngine
interface...
> >>The restart method internally sends a redirect to the servlet path.  The
> >>problem is that response.redirect() does not magically terminate the
> >>processing of the request...  i.e. engine.renderResponse(cycle, output)
> >>[line 174 of DirectService] still continues normally.  Please consider
the
> >>option I mentioned above.
> >>
> >>Paul
> >>
> >>matthew c. mead wrote:
> >>
> >>>The only way to handle application specific code with a ServiceLink
would
> >>>be to override some aspects of the service or engine behavior, right?
> >>>
> >>>The page looks to be being rendered *before* the listener method is
> >>>called.  I've put in place some debug logging that happens when the
> >>>listener method is called, and it is clearly not being called if the
page
> >>>render fails.
> >>>
> >>>
> >>>Thanks!
> >>>
> >>>
> >>>-matt
> >>>
> >>>Paul Ferraro wrote:
> >>>
> >>>>Unless you direct the request elsewhere (i.e. cycle.activate(...)) the
> >>>>current page will always be rendered after an IActionListener is
> >>>>triggered.  Perhaps you want to use a ServiceLink instead?
> >>>>e.g.
> >>>><a jwcid="@ServiceLink" service="restart">Logout</a>
> >>>>
> >>>>Paul
> >>>>
> >>>>matthew c. mead wrote:
> >>>>
> >>>>>Just in case anyone else is seeing this problem I found the issue.
> >>>>>
> >>>>>It appears when calling a listener, the page is still rendered.  My
> >>>>>properties were not persistent and so I was getting
> >>>>>NullPointerExceptions due to this.
> >>>>>
> >>>>>I'm pretty surprised the page is rendered when calling a listener.
> >>>>>
> >>>>>
> >>>>>
> >>>>>-matt
> >>>>>
> >>>>>matthew c. mead wrote:
> >>>>>
> >>>>>>Some more info...  I used @DirectLink - when I use @ActionLink
> >>>>>>instead, I get an ognl.OgnlException - it seems like it is trying to
> >>>>>>re-render the page the user was on when they clicked the logout
link,
> >>>>>>rather than the engine correctly redirecting them to the home url.
> >>>>>>
> >>>>>>Does this sound familiar?
> >>>>>>
> >>>>>>
> >>>>>>-matt
> >>>>>>
> >>>>>>
> >>>>>>matthew c. mead wrote:
> >>>>>>
> >>>>>>>Following the logout link thread, I decided to implement one.
> >>>>>>>
> >>>>>>>In my BaseAuthenticatedPage, I put the following code:
> >>>>>>>
> >>>>>>>  public final void logout(IRequestCycle cycle) {
> >>>>>>>    // MCM TODO record logout event in audit log
> >>>>>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
> >>>>>>>    try {
> >>>>>>>      engine.restart(getRequestCycle());
> >>>>>>>    } catch (IOException e) {
> >>>>>>>      logger.error("Caught IOException trying to restart engine.",
> >>>>>>>e);
> >>>>>>>    }
> >>>>>>>  }
> >>>>>>>
> >>>>>>>On some pages, this works.  On others, I get the following
exception.
> >>>>>>>  Any ideas?
> >>>>>>>
> >>>>>>>Thanks!
> >>>>>>>
> >>>>>>>
> >>>>>>>-matt
> >>>>>>>
> >>>>>>>Exception:
> >>>>>>>
> >>>>>>>[30570][WARN][tapestry.engine.AbstractEngine] Unable to present
> >>>>>>>exception page.
> >>>>>>>org.apache.tapestry.ApplicationRuntimeException: getCreationTime:
> >>>>>>>Session already invalidated
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:
382)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngi
ne.java:732)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(Abstr
actEngine.java:459)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java
:914)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.j
ava:197)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:
158)
> >>>>>>>
> >>>>>>>        at
> >>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> >>>>>>>        at
> >>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:237)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
ContextValve.java:198)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:152)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:137)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:118)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:102)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16
0)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:705)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:683)
> >>>>>>>
> >>>>>>>        at java.lang.Thread.run(Thread.java:552)
> >>>>>>>Caused by: java.lang.IllegalStateException: getCreationTime:
Session
> >>>>>>>already invalidated
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.session.StandardSession.getCreationTime(StandardS
ession.java:920)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.catalina.session.StandardSessionFacade.getCreationTime(Sta
ndardSessionFacade.java:77)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.request.RequestContext.write(RequestContext.java:
751)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.request.RequestContext.render(RequestContext.java
:1062)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.components.Delegator.renderComponent(Delegator.ja
va:45)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:8
57)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.ja
va:624)
> >>>>>>>
> >>>>>>>        at
> >>>>>>>org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:8
57)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:
118)
> >>>>>>>
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:8
57)
> >>>>>>>
> >>>>>>>        at
> >>>>>>>org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
> >>>>>>>        at
>
>>>>>>>org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:
368)
> >>>>>>>
> >>>>>>>        ... 31 more
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> >>>>For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >>>>
> >>>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> >>For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >>
> >
> >--
> >matthew c. mead
> >
> >http://www.goof.com/
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: engine restart fails on some pages?

Posted by david joffrin <da...@hotmail.com>.
Hi,

I followed with some attention the trace of this thread and finally looked 
at the restart method description. It is stated there:
"Invoked to restart the application from start; this most frequently follows 
some kind of catastrophic failure. This will invalidate any HttpSession and 
force a redirect to the application servlet (i.e., invoking the home service 
in a subsequent request cycle)."

What shall I understand by that? All currently HttpSessions open are 
destroyed? Does it mean that if I apply that for logout feature, all users 
currently logged in will be logged out if one logs out?

Thanks.
David Joffrin
MSN: david_joffrin@hotmail.com




>From: "matthew c. mead" <m-...@goof.com>
>Reply-To: "Tapestry users" <ta...@jakarta.apache.org>
>To: Tapestry users <ta...@jakarta.apache.org>
>Subject: Re: engine restart fails on some pages?
>Date: Wed, 23 Feb 2005 17:24:53 -0500
>
>Paul,
>
>Thanks for the detailed information.  I'll look into overriding the 
>RestartService - I'm not sure what that entails right now.  I may just 
>switch to getEngine().setVisit(null); and then throw new 
>PageRedirectException("Home");
>
>I got the idea to do the casting here: 
>http://wiki.apache.org/jakarta-tapestry/FrequentlyAskedQuestions/LogoutLink
>
>Perhaps it needs to be updated - I'd offer to do it, but it is listed as an 
>immutable page.
>
>Thanks again!
>
>
>
>
>-matt
>
>
>Paul Ferraro wrote:
>
>>I see what's going on here...
>>
>>You want to perform some action upon logout (e.g. logging to an audit 
>>trail).  The best way to do this is to override the RestartService and add 
>>this behavior so that all restart requests will be audited in this way and 
>>use the ServiceLink component to trigger it.
>>
>>You should *not* cast the engine to an IEngineServiceView inside your 
>>listener.  The restart(cycle) method was not intended to be called from an 
>>IActionListener.  There is a reason why the IEngineServiceView interface 
>>is not exposed to IActionListeners - in other words... there is a reason 
>>why the restart(cycle) method is not exposed from the IEngine interface...
>>The restart method internally sends a redirect to the servlet path.  The 
>>problem is that response.redirect() does not magically terminate the 
>>processing of the request...  i.e. engine.renderResponse(cycle, output) 
>>[line 174 of DirectService] still continues normally.  Please consider the 
>>option I mentioned above.
>>
>>Paul
>>
>>matthew c. mead wrote:
>>
>>>The only way to handle application specific code with a ServiceLink would 
>>>be to override some aspects of the service or engine behavior, right?
>>>
>>>The page looks to be being rendered *before* the listener method is 
>>>called.  I've put in place some debug logging that happens when the 
>>>listener method is called, and it is clearly not being called if the page 
>>>render fails.
>>>
>>>
>>>Thanks!
>>>
>>>
>>>-matt
>>>
>>>Paul Ferraro wrote:
>>>
>>>>Unless you direct the request elsewhere (i.e. cycle.activate(...)) the 
>>>>current page will always be rendered after an IActionListener is 
>>>>triggered.  Perhaps you want to use a ServiceLink instead?
>>>>e.g.
>>>><a jwcid="@ServiceLink" service="restart">Logout</a>
>>>>
>>>>Paul
>>>>
>>>>matthew c. mead wrote:
>>>>
>>>>>Just in case anyone else is seeing this problem I found the issue.
>>>>>
>>>>>It appears when calling a listener, the page is still rendered.  My 
>>>>>properties were not persistent and so I was getting 
>>>>>NullPointerExceptions due to this.
>>>>>
>>>>>I'm pretty surprised the page is rendered when calling a listener.
>>>>>
>>>>>
>>>>>
>>>>>-matt
>>>>>
>>>>>matthew c. mead wrote:
>>>>>
>>>>>>Some more info...  I used @DirectLink - when I use @ActionLink 
>>>>>>instead, I get an ognl.OgnlException - it seems like it is trying to 
>>>>>>re-render the page the user was on when they clicked the logout link, 
>>>>>>rather than the engine correctly redirecting them to the home url.
>>>>>>
>>>>>>Does this sound familiar?
>>>>>>
>>>>>>
>>>>>>-matt
>>>>>>
>>>>>>
>>>>>>matthew c. mead wrote:
>>>>>>
>>>>>>>Following the logout link thread, I decided to implement one.
>>>>>>>
>>>>>>>In my BaseAuthenticatedPage, I put the following code:
>>>>>>>
>>>>>>>  public final void logout(IRequestCycle cycle) {
>>>>>>>    // MCM TODO record logout event in audit log
>>>>>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>>>>>>    try {
>>>>>>>      engine.restart(getRequestCycle());
>>>>>>>    } catch (IOException e) {
>>>>>>>      logger.error("Caught IOException trying to restart engine.", 
>>>>>>>e);
>>>>>>>    }
>>>>>>>  }
>>>>>>>
>>>>>>>On some pages, this works.  On others, I get the following exception. 
>>>>>>>  Any ideas?
>>>>>>>
>>>>>>>Thanks!
>>>>>>>
>>>>>>>
>>>>>>>-matt
>>>>>>>
>>>>>>>Exception:
>>>>>>>
>>>>>>>[30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>>>>>>>exception page.
>>>>>>>org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>>>>>>>Session already invalidated
>>>>>>>        at 
>>>>>>>org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
>>>>>>>
>>>>>>>        at 
>>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>>>>>        at 
>>>>>>>javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
>>>>>>>
>>>>>>>        at java.lang.Thread.run(Thread.java:552)
>>>>>>>Caused by: java.lang.IllegalStateException: getCreationTime: Session 
>>>>>>>already invalidated
>>>>>>>        at 
>>>>>>>org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.request.RequestContext.write(RequestContext.java:751)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>>>>>>        at 
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>>>>>>
>>>>>>>        at 
>>>>>>>org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>>>>>>        at 
>>>>>>>org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
>>>>>>>
>>>>>>>        ... 31 more
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>>>For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>>>
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>
>
>--
>matthew c. mead
>
>http://www.goof.com/



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: engine restart fails on some pages?

Posted by "matthew c. mead" <m-...@goof.com>.
Paul,

Thanks for the detailed information.  I'll look into overriding the 
RestartService - I'm not sure what that entails right now.  I may just 
switch to getEngine().setVisit(null); and then throw new 
PageRedirectException("Home");

I got the idea to do the casting here: 
http://wiki.apache.org/jakarta-tapestry/FrequentlyAskedQuestions/LogoutLink

Perhaps it needs to be updated - I'd offer to do it, but it is listed as 
an immutable page.

Thanks again!




-matt


Paul Ferraro wrote:

> I see what's going on here...
>
> You want to perform some action upon logout (e.g. logging to an audit 
> trail).  The best way to do this is to override the RestartService and 
> add this behavior so that all restart requests will be audited in this 
> way and use the ServiceLink component to trigger it.
>
> You should *not* cast the engine to an IEngineServiceView inside your 
> listener.  The restart(cycle) method was not intended to be called 
> from an IActionListener.  There is a reason why the IEngineServiceView 
> interface is not exposed to IActionListeners - in other words... there 
> is a reason why the restart(cycle) method is not exposed from the 
> IEngine interface...
> The restart method internally sends a redirect to the servlet path.  
> The problem is that response.redirect() does not magically terminate 
> the processing of the request...  i.e. engine.renderResponse(cycle, 
> output) [line 174 of DirectService] still continues normally.  Please 
> consider the option I mentioned above.
>
> Paul
>
> matthew c. mead wrote:
>
>> The only way to handle application specific code with a ServiceLink 
>> would be to override some aspects of the service or engine behavior, 
>> right?
>>
>> The page looks to be being rendered *before* the listener method is 
>> called.  I've put in place some debug logging that happens when the 
>> listener method is called, and it is clearly not being called if the 
>> page render fails.
>>
>>
>> Thanks!
>>
>>
>> -matt
>>
>> Paul Ferraro wrote:
>>
>>> Unless you direct the request elsewhere (i.e. cycle.activate(...)) 
>>> the current page will always be rendered after an IActionListener is 
>>> triggered.  Perhaps you want to use a ServiceLink instead?
>>> e.g.
>>> <a jwcid="@ServiceLink" service="restart">Logout</a>
>>>
>>> Paul
>>>
>>> matthew c. mead wrote:
>>>
>>>> Just in case anyone else is seeing this problem I found the issue.
>>>>
>>>> It appears when calling a listener, the page is still rendered.  My 
>>>> properties were not persistent and so I was getting 
>>>> NullPointerExceptions due to this.
>>>>
>>>> I'm pretty surprised the page is rendered when calling a listener.
>>>>
>>>>
>>>>
>>>> -matt
>>>>
>>>> matthew c. mead wrote:
>>>>
>>>>> Some more info...  I used @DirectLink - when I use @ActionLink 
>>>>> instead, I get an ognl.OgnlException - it seems like it is trying 
>>>>> to re-render the page the user was on when they clicked the logout 
>>>>> link, rather than the engine correctly redirecting them to the 
>>>>> home url.
>>>>>
>>>>> Does this sound familiar?
>>>>>
>>>>>
>>>>> -matt
>>>>>
>>>>>
>>>>> matthew c. mead wrote:
>>>>>
>>>>>> Following the logout link thread, I decided to implement one.
>>>>>>
>>>>>> In my BaseAuthenticatedPage, I put the following code:
>>>>>>
>>>>>>  public final void logout(IRequestCycle cycle) {
>>>>>>    // MCM TODO record logout event in audit log
>>>>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>>>>>    try {
>>>>>>      engine.restart(getRequestCycle());
>>>>>>    } catch (IOException e) {
>>>>>>      logger.error("Caught IOException trying to restart engine.", 
>>>>>> e);
>>>>>>    }
>>>>>>  }
>>>>>>
>>>>>> On some pages, this works.  On others, I get the following 
>>>>>> exception.  Any ideas?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>> -matt
>>>>>>
>>>>>> Exception:
>>>>>>
>>>>>> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>>>>>> exception page.
>>>>>> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>>>>>> Session already invalidated
>>>>>>        at 
>>>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) 
>>>>>>
>>>>>>        at 
>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>>>>        at 
>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>>>>        at 
>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>>>>>
>>>>>>        at java.lang.Thread.run(Thread.java:552)
>>>>>> Caused by: java.lang.IllegalStateException: getCreationTime: 
>>>>>> Session already invalidated
>>>>>>        at 
>>>>>> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>>>>>        at 
>>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>>
>>>>>>        at 
>>>>>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>>>>>        at 
>>>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368) 
>>>>>>
>>>>>>        ... 31 more
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>

-- 
matthew c. mead

http://www.goof.com/

Re: engine restart fails on some pages?

Posted by Paul Ferraro <pm...@columbia.edu>.
I see what's going on here...

You want to perform some action upon logout (e.g. logging to an audit 
trail).  The best way to do this is to override the RestartService and 
add this behavior so that all restart requests will be audited in this 
way and use the ServiceLink component to trigger it.

You should *not* cast the engine to an IEngineServiceView inside your 
listener.  The restart(cycle) method was not intended to be called from 
an IActionListener.  There is a reason why the IEngineServiceView 
interface is not exposed to IActionListeners - in other words... there 
is a reason why the restart(cycle) method is not exposed from the 
IEngine interface...
The restart method internally sends a redirect to the servlet path.  The 
problem is that response.redirect() does not magically terminate the 
processing of the request...  i.e. engine.renderResponse(cycle, output) 
[line 174 of DirectService] still continues normally.  Please consider 
the option I mentioned above.

Paul

matthew c. mead wrote:

> The only way to handle application specific code with a ServiceLink 
> would be to override some aspects of the service or engine behavior, 
> right?
>
> The page looks to be being rendered *before* the listener method is 
> called.  I've put in place some debug logging that happens when the 
> listener method is called, and it is clearly not being called if the 
> page render fails.
>
>
> Thanks!
>
>
> -matt
>
> Paul Ferraro wrote:
>
>> Unless you direct the request elsewhere (i.e. cycle.activate(...)) 
>> the current page will always be rendered after an IActionListener is 
>> triggered.  Perhaps you want to use a ServiceLink instead?
>> e.g.
>> <a jwcid="@ServiceLink" service="restart">Logout</a>
>>
>> Paul
>>
>> matthew c. mead wrote:
>>
>>> Just in case anyone else is seeing this problem I found the issue.
>>>
>>> It appears when calling a listener, the page is still rendered.  My 
>>> properties were not persistent and so I was getting 
>>> NullPointerExceptions due to this.
>>>
>>> I'm pretty surprised the page is rendered when calling a listener.
>>>
>>>
>>>
>>> -matt
>>>
>>> matthew c. mead wrote:
>>>
>>>> Some more info...  I used @DirectLink - when I use @ActionLink 
>>>> instead, I get an ognl.OgnlException - it seems like it is trying 
>>>> to re-render the page the user was on when they clicked the logout 
>>>> link, rather than the engine correctly redirecting them to the home 
>>>> url.
>>>>
>>>> Does this sound familiar?
>>>>
>>>>
>>>> -matt
>>>>
>>>>
>>>> matthew c. mead wrote:
>>>>
>>>>> Following the logout link thread, I decided to implement one.
>>>>>
>>>>> In my BaseAuthenticatedPage, I put the following code:
>>>>>
>>>>>  public final void logout(IRequestCycle cycle) {
>>>>>    // MCM TODO record logout event in audit log
>>>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>>>>    try {
>>>>>      engine.restart(getRequestCycle());
>>>>>    } catch (IOException e) {
>>>>>      logger.error("Caught IOException trying to restart engine.", e);
>>>>>    }
>>>>>  }
>>>>>
>>>>> On some pages, this works.  On others, I get the following 
>>>>> exception.  Any ideas?
>>>>>
>>>>> Thanks!
>>>>>
>>>>>
>>>>> -matt
>>>>>
>>>>> Exception:
>>>>>
>>>>> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>>>>> exception page.
>>>>> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>>>>> Session already invalidated
>>>>>        at 
>>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) 
>>>>>
>>>>>        at 
>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>>>        at 
>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>>>        at 
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>>>>        at 
>>>>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
>>>>>
>>>>>        at 
>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>>>>
>>>>>        at 
>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>>>>
>>>>>        at 
>>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>>>>
>>>>>        at 
>>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>>>>
>>>>>        at java.lang.Thread.run(Thread.java:552)
>>>>> Caused by: java.lang.IllegalStateException: getCreationTime: 
>>>>> Session already invalidated
>>>>>        at 
>>>>> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>>>>>
>>>>>        at 
>>>>> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>>>>        at 
>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>>
>>>>>        at 
>>>>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>>>>        at 
>>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368) 
>>>>>
>>>>>        ... 31 more
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: engine restart fails on some pages?

Posted by "matthew c. mead" <m-...@goof.com>.
The only way to handle application specific code with a ServiceLink 
would be to override some aspects of the service or engine behavior, right?

The page looks to be being rendered *before* the listener method is 
called.  I've put in place some debug logging that happens when the 
listener method is called, and it is clearly not being called if the 
page render fails.


Thanks!


-matt

Paul Ferraro wrote:

> Unless you direct the request elsewhere (i.e. cycle.activate(...)) the 
> current page will always be rendered after an IActionListener is 
> triggered.  Perhaps you want to use a ServiceLink instead?
> e.g.
> <a jwcid="@ServiceLink" service="restart">Logout</a>
>
> Paul
>
> matthew c. mead wrote:
>
>> Just in case anyone else is seeing this problem I found the issue.
>>
>> It appears when calling a listener, the page is still rendered.  My 
>> properties were not persistent and so I was getting 
>> NullPointerExceptions due to this.
>>
>> I'm pretty surprised the page is rendered when calling a listener.
>>
>>
>>
>> -matt
>>
>> matthew c. mead wrote:
>>
>>> Some more info...  I used @DirectLink - when I use @ActionLink 
>>> instead, I get an ognl.OgnlException - it seems like it is trying to 
>>> re-render the page the user was on when they clicked the logout 
>>> link, rather than the engine correctly redirecting them to the home 
>>> url.
>>>
>>> Does this sound familiar?
>>>
>>>
>>> -matt
>>>
>>>
>>> matthew c. mead wrote:
>>>
>>>> Following the logout link thread, I decided to implement one.
>>>>
>>>> In my BaseAuthenticatedPage, I put the following code:
>>>>
>>>>  public final void logout(IRequestCycle cycle) {
>>>>    // MCM TODO record logout event in audit log
>>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>>>    try {
>>>>      engine.restart(getRequestCycle());
>>>>    } catch (IOException e) {
>>>>      logger.error("Caught IOException trying to restart engine.", e);
>>>>    }
>>>>  }
>>>>
>>>> On some pages, this works.  On others, I get the following 
>>>> exception.  Any ideas?
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> -matt
>>>>
>>>> Exception:
>>>>
>>>> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>>>> exception page.
>>>> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>>>> Session already invalidated
>>>>        at 
>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) 
>>>>
>>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>>        at 
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>
>>>>        at 
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>>
>>>>        at 
>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>>>        at 
>>>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
>>>>
>>>>        at 
>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>>>
>>>>        at 
>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>>>
>>>>        at 
>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>>>
>>>>        at 
>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>>>
>>>>        at java.lang.Thread.run(Thread.java:552)
>>>> Caused by: java.lang.IllegalStateException: getCreationTime: 
>>>> Session already invalidated
>>>>        at 
>>>> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>>>>
>>>>        at 
>>>> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>>>        at 
>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>>
>>>>        at 
>>>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>>>        at 
>>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368) 
>>>>
>>>>        ... 31 more
>>>>
>>>>
>>>>
>>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>

-- 
matthew c. mead

http://www.goof.com/

Re: engine restart fails on some pages?

Posted by Paul Ferraro <pm...@columbia.edu>.
Unless you direct the request elsewhere (i.e. cycle.activate(...)) the 
current page will always be rendered after an IActionListener is 
triggered.  Perhaps you want to use a ServiceLink instead?
e.g.
<a jwcid="@ServiceLink" service="restart">Logout</a>

Paul

matthew c. mead wrote:

> Just in case anyone else is seeing this problem I found the issue.
>
> It appears when calling a listener, the page is still rendered.  My 
> properties were not persistent and so I was getting 
> NullPointerExceptions due to this.
>
> I'm pretty surprised the page is rendered when calling a listener.
>
>
>
> -matt
>
> matthew c. mead wrote:
>
>> Some more info...  I used @DirectLink - when I use @ActionLink 
>> instead, I get an ognl.OgnlException - it seems like it is trying to 
>> re-render the page the user was on when they clicked the logout link, 
>> rather than the engine correctly redirecting them to the home url.
>>
>> Does this sound familiar?
>>
>>
>> -matt
>>
>>
>> matthew c. mead wrote:
>>
>>> Following the logout link thread, I decided to implement one.
>>>
>>> In my BaseAuthenticatedPage, I put the following code:
>>>
>>>  public final void logout(IRequestCycle cycle) {
>>>    // MCM TODO record logout event in audit log
>>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>>    try {
>>>      engine.restart(getRequestCycle());
>>>    } catch (IOException e) {
>>>      logger.error("Caught IOException trying to restart engine.", e);
>>>    }
>>>  }
>>>
>>> On some pages, this works.  On others, I get the following 
>>> exception.  Any ideas?
>>>
>>> Thanks!
>>>
>>>
>>> -matt
>>>
>>> Exception:
>>>
>>> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>>> exception page.
>>> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>>> Session already invalidated
>>>        at 
>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382) 
>>>
>>>        at 
>>> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>>>
>>>        at 
>>> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>>>
>>>        at 
>>> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>>>
>>>        at 
>>> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>>>
>>>        at 
>>> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) 
>>>
>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>>
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>
>>>        at 
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>>
>>>        at 
>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>>
>>>        at 
>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>>        at 
>>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>>>        at 
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>>
>>>        at 
>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>>
>>>        at 
>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>>
>>>        at 
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>>
>>>        at java.lang.Thread.run(Thread.java:552)
>>> Caused by: java.lang.IllegalStateException: getCreationTime: Session 
>>> already invalidated
>>>        at 
>>> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>>>
>>>        at 
>>> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>>>
>>>        at 
>>> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751) 
>>>
>>>        at 
>>> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>>>
>>>        at 
>>> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>>>
>>>        at 
>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>
>>>        at 
>>> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>>>
>>>        at 
>>> org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>>        at 
>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>
>>>        at 
>>> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118) 
>>>
>>>        at 
>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857) 
>>>
>>>        at 
>>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>>        at 
>>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368) 
>>>
>>>        ... 31 more
>>>
>>>
>>>
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: engine restart fails on some pages?

Posted by "matthew c. mead" <m-...@goof.com>.
Just in case anyone else is seeing this problem I found the issue.

It appears when calling a listener, the page is still rendered.  My 
properties were not persistent and so I was getting 
NullPointerExceptions due to this.

I'm pretty surprised the page is rendered when calling a listener.



-matt

matthew c. mead wrote:

> Some more info...  I used @DirectLink - when I use @ActionLink 
> instead, I get an ognl.OgnlException - it seems like it is trying to 
> re-render the page the user was on when they clicked the logout link, 
> rather than the engine correctly redirecting them to the home url.
>
> Does this sound familiar?
>
>
> -matt
>
>
> matthew c. mead wrote:
>
>> Following the logout link thread, I decided to implement one.
>>
>> In my BaseAuthenticatedPage, I put the following code:
>>
>>  public final void logout(IRequestCycle cycle) {
>>    // MCM TODO record logout event in audit log
>>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>>    try {
>>      engine.restart(getRequestCycle());
>>    } catch (IOException e) {
>>      logger.error("Caught IOException trying to restart engine.", e);
>>    }
>>  }
>>
>> On some pages, this works.  On others, I get the following 
>> exception.  Any ideas?
>>
>> Thanks!
>>
>>
>> -matt
>>
>> Exception:
>>
>> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
>> exception page.
>> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
>> Session already invalidated
>>        at 
>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382) 
>>
>>        at 
>> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>>
>>        at 
>> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>>
>>        at 
>> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>>
>>        at 
>> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>>
>>        at 
>> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158) 
>>
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>>
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>>
>>        at 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>>
>>        at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>        at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>        at 
>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>>
>>        at 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>>
>>        at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>        at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>        at 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>>
>>        at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>        at 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>>
>>        at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>>
>>        at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>        at 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>>
>>        at 
>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>>
>>        at 
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>>
>>        at 
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>>        at 
>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>>        at 
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>>
>>        at 
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>>
>>        at 
>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>>
>>        at 
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>>
>>        at java.lang.Thread.run(Thread.java:552)
>> Caused by: java.lang.IllegalStateException: getCreationTime: Session 
>> already invalidated
>>        at 
>> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>>
>>        at 
>> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>>
>>        at 
>> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751) 
>>
>>        at 
>> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>>
>>        at 
>> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>>
>>        at 
>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>        at 
>> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>>
>>        at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>>        at 
>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>        at 
>> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118) 
>>
>>        at 
>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>>        at 
>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>>        at 
>> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368) 
>>
>>        ... 31 more
>>
>>
>>
>

-- 
matthew c. mead

http://www.goof.com/

Re: engine restart fails on some pages?

Posted by "matthew c. mead" <m-...@goof.com>.
Some more info...  I used @DirectLink - when I use @ActionLink instead, 
I get an ognl.OgnlException - it seems like it is trying to re-render 
the page the user was on when they clicked the logout link, rather than 
the engine correctly redirecting them to the home url.

Does this sound familiar?


-matt


matthew c. mead wrote:

> Following the logout link thread, I decided to implement one.
>
> In my BaseAuthenticatedPage, I put the following code:
>
>  public final void logout(IRequestCycle cycle) {
>    // MCM TODO record logout event in audit log
>    IEngineServiceView engine = (IEngineServiceView) getEngine();
>    try {
>      engine.restart(getRequestCycle());
>    } catch (IOException e) {
>      logger.error("Caught IOException trying to restart engine.", e);
>    }
>  }
>
> On some pages, this works.  On others, I get the following exception.  
> Any ideas?
>
> Thanks!
>
>
> -matt
>
> Exception:
>
> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present 
> exception page.
> org.apache.tapestry.ApplicationRuntimeException: getCreationTime: 
> Session already invalidated
>        at 
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382)
>        at 
> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732) 
>
>        at 
> org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459) 
>
>        at 
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914) 
>
>        at 
> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197) 
>
>        at 
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>
>        at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>
>        at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>        at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>
>        at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>        at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>        at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>        at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>
>        at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>        at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>        at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>        at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>        at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>
>        at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>
>        at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>
>        at java.lang.Thread.run(Thread.java:552)
> Caused by: java.lang.IllegalStateException: getCreationTime: Session 
> already invalidated
>        at 
> org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920) 
>
>        at 
> org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77) 
>
>        at 
> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751)
>        at 
> org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062) 
>
>        at 
> org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45) 
>
>        at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>        at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624) 
>
>        at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>        at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>        at 
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118)
>        at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>        at 
> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>        at 
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
>        ... 31 more
>
>
>

-- 
matthew c. mead

http://www.goof.com/

Re: engine restart fails on some pages?

Posted by Bryan Lewis <br...@maine.rr.com>.
When I first started using engine.restart() I did get that exception
"Session already invalidated."   For some reason I was calling the restart
method twice.  It was probably a rewind thing, which makes sense with your
finding that it happens only with an ActionLink which depends on a rewind.
(I use a lot fewer ActionLinks now.)

I didn't worry too much about it because I figured if the session had
already been invalidated, the job had been done.  I simply ignored that
specific exception.  I don't know a way to pre-check a session for whether
it's invalidated... catching the exception is the way to tell, AFAIK.



----- Original Message ----- 
From: "matthew c. mead" <m-...@goof.com>
To: "Tapestry users" <ta...@jakarta.apache.org>
Sent: Wednesday, February 23, 2005 3:17 PM
Subject: engine restart fails on some pages?


> Following the logout link thread, I decided to implement one.
>
> In my BaseAuthenticatedPage, I put the following code:
>
>   public final void logout(IRequestCycle cycle) {
>     // MCM TODO record logout event in audit log
>     IEngineServiceView engine = (IEngineServiceView) getEngine();
>     try {
>       engine.restart(getRequestCycle());
>     } catch (IOException e) {
>       logger.error("Caught IOException trying to restart engine.", e);
>     }
>   }
>
> On some pages, this works.  On others, I get the following exception.
> Any ideas?
>
> Thanks!
>
>
> -matt
>
> Exception:
>
> [30570][WARN][tapestry.engine.AbstractEngine] Unable to present
> exception page.
> org.apache.tapestry.ApplicationRuntimeException: getCreationTime:
> Session already invalidated
>         at
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382)
>         at
>
org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java
:732)
>         at
>
org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngi
ne.java:459)
>         at
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914)
>         at
>
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197
)
>         at
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:237)
>         at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
>         at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:214)
>         at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
>         at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
>
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:198)
>         at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:152)
>         at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
>         at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
)
>         at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
>         at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118
)
>         at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
>         at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
>         at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
>         at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>         at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
>         at
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:705)
>         at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
>         at
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:683)
>         at java.lang.Thread.run(Thread.java:552)
> Caused by: java.lang.IllegalStateException: getCreationTime: Session
> already invalidated
>         at
>
org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.
java:920)
>         at
>
org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSe
ssionFacade.java:77)
>         at
> org.apache.tapestry.request.RequestContext.write(RequestContext.java:751)
>         at
>
org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062)
>         at
>
org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45)
>         at
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>         at
>
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624)
>         at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
>         at
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>         at
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118)
>         at
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
>         at
> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
>         at
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
>         ... 31 more
>
>
>
> -- 
> matthew c. mead
>
> http://www.goof.com/
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org