For historical purposes I modified the OnJava code as follows..
private void releaseQueuedRequest( HttpServletRequest request )
{
HttpSession session = request.getSession(false);
if (session == null) {
return;
}
...
}
[EMAIL PROTECTED]
03/24/2006 12:18 PM
Please respond to
"Tapestry users" <[email protected]>
To
"Tapestry users" <[email protected]>
cc
Subject
locked after a commit on to an IllegalStateException
I was (using tapestry 3.0.3) trying to chase down the “locked after a
commit” problem yesterday and I found three different solutions:
1. Make a request filter as per:
http://www.onjava.com/pub/a/onjava/2004/03/24/loadcontrol.html?page=2
Problem detailed below…
2. Change the engine to squash the exception:
I don’t like squelching exceptions, I’d prefer they not happen at all.
3. Write JavaScript to prevent multiple clicking.
We have multiple nav menu’s/access points, doing so would be a real pain.
So, I implemented the Request Filter as mentioned in the On Java article.
From my casual testing this morning it seems to work fine and dandy, until
I click logout. My logout is a simple Engine.restart, but when that
occurs I get the following exception:
java.lang.IllegalStateException: Cannot create a session after the
response has been committed
org.apache.coyote.tomcat5.CoyoteRequest.doGetSession(CoyoteRequest.java:2270)
org.apache.coyote.tomcat5.CoyoteRequest.getSession(CoyoteRequest.java:2116)
org.apache.coyote.tomcat5.CoyoteRequestFacade.getSession(CoyoteRequestFacade.java:526)
org.apache.coyote.tomcat5.CoyoteRequestFacade.getSession(CoyoteRequestFacade.java:531)
com.expd.app.frm.util.RequestControlFilter.releaseQueuedRequest(RequestControlFilter.java:202)
com.expd.app.frm.util.RequestControlFilter.doFilter(RequestControlFilter.java:160)
The culprit seems to be:
private void releaseQueuedRequest( HttpServletRequest request )
{
HttpSession session = request.getSession();
…
}
I guess I could come up with a work around avoiding engine restart, but
I'd really like to clean house when the user clicks logout.
Any ideas/resolutions?
Thanks.