On Mon, Nov 7, 2016 at 9:55 AM, Martin Grigorov <mgrigo...@apache.org>
wrote:

> Hi,
>
> On Mon, Nov 7, 2016 at 9:44 AM, Erik de Hair <e.deh...@pocos.nl> wrote:
>
>> Hi,
>>
>> Some of our users keep complaining about unexpected exceptions so I was
>> investigating what kind of exceptions occur. Now it seems it's quite easy
>> to get an exception if you double click on an 'OK' button. (Some people
>> still don't know where to single click or double click :-S)
>>
>
> It is up to the application to decide how to prevent double form
> submittions.
> An easy way is to disable the button during Ajax call, e.g.
> Wicket-Bootstrap provides integration with Ladda
> <http://msurguy.github.io/ladda-bootstrap/>: http://wb-mgrigorov.
> rhcloud.com/extensions#ladda
>
> @Dan: is it easy to decide which buttons in Isis shoud have this behavior
> ?
>
>
>> org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedExceptionBehavior
>> rejected interface invocation. Component: [AjaxButton [Component id =
>> okButton]] Behavior: org.apache.wicket.ajax.markup.
>> html.form.AjaxButton$1@2070e2d3 Listener: [RequestListenerInterface
>> name=IBehaviorListener, method=public abstract void
>> org.apache.wicket.behavior.IBehaviorListener.onRequest()]
>> org.apache.wicket.RequestListenerInterface#invoke(RequestLis
>> tenerInterface.java:237)
>> org.apache.wicket.core.request.handler.ListenerInterfaceRequ
>> estHandler#invokeListener(ListenerInterfaceRequestHandler.java:250)
>> org.apache.wicket.core.request.handler.ListenerInterfaceRequ
>> estHandler#respond(ListenerInterfaceRequestHandler.java:236)
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor
>> #respond(RequestCycle.java:890)
>> org.apache.wicket.request.RequestHandlerStack#execute(Reques
>> tHandlerStack.java:64)
>> org.apache.wicket.request.cycle.RequestCycle#execute(Request
>> Cycle.java:261)
>> org.apache.wicket.request.cycle.RequestCycle#processRequest(
>> RequestCycle.java:218)
>> org.apache.wicket.request.cycle.RequestCycle#processRequestA
>> ndDetach(RequestCycle.java:289)
>> org.apache.wicket.protocol.http.WicketFilter#processRequestC
>> ycle(WicketFilter.java:259)
>> org.apache.wicket.protocol.http.WicketFilter#processRequest(
>> WicketFilter.java:201)
>> org.apache.wicket.protocol.http.WicketFilter#doFilter(Wicket
>> Filter.java:282)
>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi
>> lter(ApplicationFilterChain.java:241)
>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App
>> licationFilterChain.java:208)
>> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChai
>> n(AbstractShiroFilter.java:449)
>> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(Abst
>> ractShiroFilter.java:365)
>> org.apache.shiro.subject.support.SubjectCallable#doCall(Subj
>> ectCallable.java:90)
>> org.apache.shiro.subject.support.SubjectCallable#call(Subjec
>> tCallable.java:83)
>> org.apache.shiro.subject.support.DelegatingSubject#execute(D
>> elegatingSubject.java:383)
>> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInt
>> ernal(AbstractShiroFilter.java:362)
>> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(O
>> ncePerRequestFilter.java:125)
>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi
>> lter(ApplicationFilterChain.java:241)
>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App
>> licationFilterChain.java:208)
>> org.apache.catalina.core.StandardWrapperValve#invoke(Standar
>> dWrapperValve.java:220)
>> org.apache.catalina.core.StandardContextValve#invoke(Standar
>> dContextValve.java:122)
>> org.apache.catalina.authenticator.AuthenticatorBase#invoke(A
>> uthenticatorBase.java:503)
>> org.apache.catalina.core.StandardHostValve#invoke(StandardHo
>> stValve.java:170)
>> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorRepo
>> rtValve.java:103)
>> org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:950)
>> org.apache.catalina.core.StandardEngineValve#invoke(Standard
>> EngineValve.java:116)
>> org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAd
>> apter.java:421)
>> org.apache.coyote.ajp.AjpProcessor#process(AjpProcessor.java:190)
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler
>> #process(AbstractProtocol.java:611)
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(J
>> IoEndpoint.java:314)
>> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPool
>> Executor.java:1142)
>> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoo
>> lExecutor.java:617)
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#r
>> un(TaskThread.java:61)
>>     java.lang.Thread#run(Thread.java:745)
>>
>> There's another frequently occurring exception in the log that occurs
>> when using the autocomplete field:
>>
>> java.lang.IllegalStateExceptiongetOutputStream() has already been called
>> for this response org.apache.catalina.connector.
>> Response#getWriter(Response.java:678)
>>
>
> This is a bug, but I am not sure where exactly.
> An application should not try to write both to the Servlet's writer and
> outputStream in the same response.
>

The easiest way to debug is to put a breakpoint at
ResponseFacade#getWriter() and ResponseFacade#getOutputStream() and see
what happens.


>
>
>> org.apache.catalina.connector.ResponseFacade#getWriter(Respo
>> nseFacade.java:213)
>> org.apache.wicket.protocol.http.servlet.ServletWebResponse#s
>> endRedirect(ServletWebResponse.java:280)
>> org.apache.wicket.protocol.http.HeaderBufferingWebResponse#s
>> endRedirect(HeaderBufferingWebResponse.java:117)
>> org.apache.wicket.request.handler.render.WebPageRenderer#red
>> irectTo(WebPageRenderer.java:176)
>> org.apache.wicket.request.handler.render.WebPageRenderer#res
>> pond(WebPageRenderer.java:242)
>> org.apache.wicket.core.request.handler.RenderPageRequestHand
>> ler#respond(RenderPageRequestHandler.java:175)
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor
>> #respond(RequestCycle.java:890)
>> org.apache.wicket.request.RequestHandlerStack#execute(Reques
>> tHandlerStack.java:64)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:310)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#executeExceptio
>> nRequestHandler(RequestCycle.java:319)
>> org.apache.wicket.request.cycle.RequestCycle#processRequest(
>> RequestCycle.java:233)
>> org.apache.wicket.request.cycle.RequestCycle#processRequestA
>> ndDetach(RequestCycle.java:289)
>> org.apache.wicket.protocol.http.WicketFilter#processRequestC
>> ycle(WicketFilter.java:259)
>> org.apache.wicket.protocol.http.WicketFilter#processRequest(
>> WicketFilter.java:201)
>> org.apache.wicket.protocol.http.WicketFilter#doFilter(Wicket
>> Filter.java:282)
>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi
>> lter(ApplicationFilterChain.java:241)
>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App
>> licationFilterChain.java:208)
>> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChai
>> n(AbstractShiroFilter.java:449)
>> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(Abst
>> ractShiroFilter.java:365)
>> org.apache.shiro.subject.support.SubjectCallable#doCall(Subj
>> ectCallable.java:90)
>> org.apache.shiro.subject.support.SubjectCallable#call(Subjec
>> tCallable.java:83)
>> org.apache.shiro.subject.support.DelegatingSubject#execute(D
>> elegatingSubject.java:383)
>> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInt
>> ernal(AbstractShiroFilter.java:362)
>> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(O
>> ncePerRequestFilter.java:125)
>> org.apache.catalina.core.ApplicationFilterChain#internalDoFi
>> lter(ApplicationFilterChain.java:241)
>> org.apache.catalina.core.ApplicationFilterChain#doFilter(App
>> licationFilterChain.java:208)
>> org.apache.catalina.core.StandardWrapperValve#invoke(Standar
>> dWrapperValve.java:220)
>> org.apache.catalina.core.StandardContextValve#invoke(Standar
>> dContextValve.java:122)
>> org.apache.catalina.authenticator.AuthenticatorBase#invoke(A
>> uthenticatorBase.java:503)
>> org.apache.catalina.core.StandardHostValve#invoke(StandardHo
>> stValve.java:170)
>> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorRepo
>> rtValve.java:103)
>> org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:950)
>> org.apache.catalina.core.StandardEngineValve#invoke(Standard
>> EngineValve.java:116)
>> org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAd
>> apter.java:421)
>> org.apache.coyote.ajp.AjpProcessor#process(AjpProcessor.java:190)
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler
>> #process(AbstractProtocol.java:611)
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(J
>> IoEndpoint.java:314)
>> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPool
>> Executor.java:1142)
>> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoo
>> lExecutor.java:617)
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#r
>> un(TaskThread.java:61)
>>     java.lang.Thread#run(Thread.java:745)
>>
>> The autocomplete works as expected so it doesn't trouble the user.
>> Anybody else getting this exception or does it depend on our configuration?
>>
>> Erik
>>
>>
>

Reply via email to