Hello,

I'm trying to implement logout using Wicket 7.2.0. I'm using container
managed form based login. So I implemented the logout sequence like this:

public class LogoutForm extends Form
{
    protected void onSubmit ()
    {
        getSession ().invalidateNow ();
        ((WebResponse) getResponse ()).sendRedirect
("http://localhost:7101/WicketTest/welcome.html";);
    }
}

The code works, and the user is redirected to the specified page. But what
worries me is, that I get the following exception in the server log:

java.lang.IllegalStateException: Response already committed
        at
weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:1853)
        at
weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:953)
        at
weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:948)
        at
org.apache.wicket.protocol.http.servlet.ServletWebResponse.sendRedirect(ServletWebResponse.java:296)
        at
org.apache.wicket.protocol.http.BufferedWebResponse$SendRedirectAction.invoke(BufferedWebResponse.java:409)
        at
org.apache.wicket.protocol.http.BufferedWebResponse.writeTo(BufferedWebResponse.java:602)
        at
org.apache.wicket.protocol.http.HeaderBufferingWebResponse.stopBuffering(HeaderBufferingWebResponse.java:60)
        at
org.apache.wicket.protocol.http.HeaderBufferingWebResponse.flush(HeaderBufferingWebResponse.java:97)
        at
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:263)
        at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
        at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284)
        at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
        at
oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:649)
        at
oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)
        at 
oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)
        at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
        at 
oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:224)
        at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
        at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3654)
        at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3620)
        at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
        at
weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196)
        at
weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
        at 
weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
        at
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2423)
        at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2280)
        at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2258)
        at
weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1626)
        at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1586)
        at
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
        at
weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
        at
weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
        at
weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
        at
weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
        at
weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

So is something missing in my code? Wicket seems to do something with the
response although it is already committed.

Thanks for hints Thomas


--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/java-lang-IllegalStateException-Response-already-committed-after-calling-WebResponse-sendRedirect-tp4674096.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to