Hi,

On Wed, Mar 23, 2016 at 1:50 PM, THMayr <[email protected]> wrote:

> 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";);
>

Replace with:
getSession().invalidate();
setResponsePage(WebApplication.get().getHomePage());


    }
> }
>
> 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)
>

It seems Wicket tries to do a second redirect. (Assuming the first one is
successful).


>         at
>
> weblogic.servlet.internal.ServletResponseImpl.sendRedirect(ServletResponseImpl.java:948)
>         at
>
> org.apache.wicket.protocol.http.servlet.ServletWebResponse.sendRedirect(ServletWebResponse.java:296)
>

Put a breakoint here and see how many times and with what values it is
being called.


>         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