Re: Exceptions

2016-11-07 Thread Dan Haywood
Perhaps you could just throw and catch a stacktrace in both cases, logging
to stdout; then force the error and see what you get?

On 7 Nov 2016 3:01 p.m., "Erik de Hair"  wrote:

>
> On 11/07/2016 02:07 PM, Martin Grigorov wrote:
>
>> On Mon, Nov 7, 2016 at 12:04 PM, Erik de Hair  wrote:
>>
>> On 11/07/2016 09:57 AM, Martin Grigorov wrote:
>>>
>>> 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.

 The TextChoiceProvider is writing to the outputstream. Is that what you

>>> wanted to know?
>>>
>>> I believe this is not the cause.
>> The previous stacktrace shows that a redirect is attempted. I don't expect
>> a redirect after sending the JSON response for the Select2 component.
>> I guess the http request didn't fail with the previous exception after you
>> released the breakpoint ?
>>
> You're right. That's not throwing any exception. I don't know how to debug
> this. When I put a breakpoint on getWriter() only, it behaves differently
> because the ajax request times out (I believe) and I get a different
> exception.
>
>>
>> "http-bio-8080-exec-10@22498" daemon prio=5 tid=0x44 nid=NA runnable
>>>java.lang.Thread.State: RUNNABLE
>>>at org.apache.catalina.connector.ResponseFacade.getOutputStream
>>> (ResponseFacade.java:196)
>>>at org.apache.wicket.protocol.http.servlet.ServletWebResponse.
>>> write(ServletWebResponse.java:135)
>>>at org.apache.wicket.protocol.http.HeaderBufferingWebResponse.w
>>> rite(HeaderBufferingWebResponse.java:196)
>>>at org.apache.wicket.request.Response$StreamAdapter.write(Respo
>>> nse.java:148)
>>>at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
>>>at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
>>>at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
>>>- locked <0x57e8> (a java.io.OutputStreamWriter)
>>>at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135)
>>>at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220)
>>>at java.io.Writer.write(Writer.java:157)
>>>at org.apache.wicket.ajax.json.JSONWriter.key(JSONWriter.java:
>>> 212)
>>>at org.wicketstuff.select2.TextChoiceProvider.toJson(TextChoice
>>> Provider.java:38)
>>>at org.wicketstuff.select2.AbstractSelect2Choice.onResourceRequ
>>> ested(AbstractSelect2Choice.java:473)
>>>at org.wicketstuff.select2.Select2Choice.onResourceRequested(Se
>>> lect2Choice.java:36)
>>>at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAcc
>>> essorImpl.java:-1)
>>>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>> ssorImpl.java:62)
>>>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>> thodAccessorImpl.java:43)
>>>at java.lang.reflect.Method.invoke(Method.java:498)
>>>at org.apache.wicket.RequestListenerInterface.internalInvoke(Re
>>> questListenerInterface.java:258)
>>>at org.apache.wicket.RequestListenerInterface.invoke(RequestLis
>>> tenerInterface.java:216)
>>>at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
>>> estHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
>>>at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
>>> estHandler.respond(ListenerInterfaceRequestHandler.java:236)
>>>at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor
>>> .respond(RequestCycle.java:890)
>>>at org.apache.wicket.request.RequestHandlerStack.execute(Reques
>>> tHandlerStack.java:64)
>>>at org.apache.wicket.request.cycle.RequestCycle.execute(Request
>>> Cycle.java:261)
>>>at org.apache.wicket.request.cycle.RequestCycle.processRequest(
>>> RequestCycle.java:218)
>>>at org.apache.wicket.request.cycle.RequestCycle.processRequestA
>>> ndDetach(RequestCycle.java:289)
>>>at org.apache.wicket.protocol.http.WicketFilter.processRequestC
>>> ycle(WicketFilter.java:259)
>>>at org.apache.wicket.protocol.http.WicketFilter.processRequest(
>>> WicketFilter.java:201)
>>>at org.apache.wicket.protocol.http.WicketFilter.doFilter(Wicket
>>> Filter.java:282)
>>>at org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>>> lter(ApplicationFilterChain.java:241)
>>>at org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>>> licationFilterChain.java:208)
>>>at org.apache

Re: Exceptions

2016-11-07 Thread Erik de Hair


On 11/07/2016 02:07 PM, Martin Grigorov wrote:

On Mon, Nov 7, 2016 at 12:04 PM, Erik de Hair  wrote:


On 11/07/2016 09:57 AM, Martin Grigorov wrote:


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.

The TextChoiceProvider is writing to the outputstream. Is that what you

wanted to know?


I believe this is not the cause.
The previous stacktrace shows that a redirect is attempted. I don't expect
a redirect after sending the JSON response for the Select2 component.
I guess the http request didn't fail with the previous exception after you
released the breakpoint ?
You're right. That's not throwing any exception. I don't know how to 
debug this. When I put a breakpoint on getWriter() only, it behaves 
differently because the ajax request times out (I believe) and I get a 
different exception.



"http-bio-8080-exec-10@22498" daemon prio=5 tid=0x44 nid=NA runnable
   java.lang.Thread.State: RUNNABLE
   at org.apache.catalina.connector.ResponseFacade.getOutputStream
(ResponseFacade.java:196)
   at org.apache.wicket.protocol.http.servlet.ServletWebResponse.
write(ServletWebResponse.java:135)
   at org.apache.wicket.protocol.http.HeaderBufferingWebResponse.w
rite(HeaderBufferingWebResponse.java:196)
   at org.apache.wicket.request.Response$StreamAdapter.write(Respo
nse.java:148)
   at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
   at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
   at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
   - locked <0x57e8> (a java.io.OutputStreamWriter)
   at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135)
   at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220)
   at java.io.Writer.write(Writer.java:157)
   at org.apache.wicket.ajax.json.JSONWriter.key(JSONWriter.java:212)
   at org.wicketstuff.select2.TextChoiceProvider.toJson(TextChoice
Provider.java:38)
   at org.wicketstuff.select2.AbstractSelect2Choice.onResourceRequ
ested(AbstractSelect2Choice.java:473)
   at org.wicketstuff.select2.Select2Choice.onResourceRequested(Se
lect2Choice.java:36)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAcc
essorImpl.java:-1)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
ssorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
thodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.apache.wicket.RequestListenerInterface.internalInvoke(Re
questListenerInterface.java:258)
   at org.apache.wicket.RequestListenerInterface.invoke(RequestLis
tenerInterface.java:216)
   at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
estHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
   at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
estHandler.respond(ListenerInterfaceRequestHandler.java:236)
   at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor
.respond(RequestCycle.java:890)
   at org.apache.wicket.request.RequestHandlerStack.execute(Reques
tHandlerStack.java:64)
   at org.apache.wicket.request.cycle.RequestCycle.execute(Request
Cycle.java:261)
   at org.apache.wicket.request.cycle.RequestCycle.processRequest(
RequestCycle.java:218)
   at org.apache.wicket.request.cycle.RequestCycle.processRequestA
ndDetach(RequestCycle.java:289)
   at org.apache.wicket.protocol.http.WicketFilter.processRequestC
ycle(WicketFilter.java:259)
   at org.apache.wicket.protocol.http.WicketFilter.processRequest(
WicketFilter.java:201)
   at org.apache.wicket.protocol.http.WicketFilter.doFilter(Wicket
Filter.java:282)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(App
licationFilterChain.java:208)
   at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChai
n(AbstractShiroFilter.java:449)
   at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(Abst
ractShiroFilter.java:365)
   at org.apache.shiro.subject.support.SubjectCallable.doCall(
SubjectCallable.java:90)
   at org.apache.shiro.subject.support.SubjectCallable.call(Subjec
tCallable.java:83)
   at org.apache.shiro.subject.support.DelegatingSubject.execute(
DelegatingSubject.java:383)
   at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInt
ernal(AbstractShiroFilter.java:36

Re: Exceptions

2016-11-07 Thread Martin Grigorov
On Mon, Nov 7, 2016 at 12:04 PM, Erik de Hair  wrote:

>
> On 11/07/2016 09:57 AM, Martin Grigorov wrote:
>
>> 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.
>>
>> The TextChoiceProvider is writing to the outputstream. Is that what you
> wanted to know?
>

I believe this is not the cause.
The previous stacktrace shows that a redirect is attempted. I don't expect
a redirect after sending the JSON response for the Select2 component.
I guess the http request didn't fail with the previous exception after you
released the breakpoint ?


>
> "http-bio-8080-exec-10@22498" daemon prio=5 tid=0x44 nid=NA runnable
>   java.lang.Thread.State: RUNNABLE
>   at org.apache.catalina.connector.ResponseFacade.getOutputStream
> (ResponseFacade.java:196)
>   at org.apache.wicket.protocol.http.servlet.ServletWebResponse.
> write(ServletWebResponse.java:135)
>   at org.apache.wicket.protocol.http.HeaderBufferingWebResponse.w
> rite(HeaderBufferingWebResponse.java:196)
>   at org.apache.wicket.request.Response$StreamAdapter.write(Respo
> nse.java:148)
>   at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
>   at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
>   at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
>   - locked <0x57e8> (a java.io.OutputStreamWriter)
>   at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135)
>   at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220)
>   at java.io.Writer.write(Writer.java:157)
>   at org.apache.wicket.ajax.json.JSONWriter.key(JSONWriter.java:212)
>   at org.wicketstuff.select2.TextChoiceProvider.toJson(TextChoice
> Provider.java:38)
>   at org.wicketstuff.select2.AbstractSelect2Choice.onResourceRequ
> ested(AbstractSelect2Choice.java:473)
>   at org.wicketstuff.select2.Select2Choice.onResourceRequested(Se
> lect2Choice.java:36)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAcc
> essorImpl.java:-1)
>   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> ssorImpl.java:62)
>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> thodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at org.apache.wicket.RequestListenerInterface.internalInvoke(Re
> questListenerInterface.java:258)
>   at org.apache.wicket.RequestListenerInterface.invoke(RequestLis
> tenerInterface.java:216)
>   at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
> estHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
>   at org.apache.wicket.core.request.handler.ListenerInterfaceRequ
> estHandler.respond(ListenerInterfaceRequestHandler.java:236)
>   at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor
> .respond(RequestCycle.java:890)
>   at org.apache.wicket.request.RequestHandlerStack.execute(Reques
> tHandlerStack.java:64)
>   at org.apache.wicket.request.cycle.RequestCycle.execute(Request
> Cycle.java:261)
>   at org.apache.wicket.request.cycle.RequestCycle.processRequest(
> RequestCycle.java:218)
>   at org.apache.wicket.request.cycle.RequestCycle.processRequestA
> ndDetach(RequestCycle.java:289)
>   at org.apache.wicket.protocol.http.WicketFilter.processRequestC
> ycle(WicketFilter.java:259)
>   at org.apache.wicket.protocol.http.WicketFilter.processRequest(
> WicketFilter.java:201)
>   at org.apache.wicket.protocol.http.WicketFilter.doFilter(Wicket
> Filter.java:282)
>   at org.apache.catalina.core.ApplicationFilterChain.internalDoFi
> lter(ApplicationFilterChain.java:241)
>   at org.apache.catalina.core.ApplicationFilterChain.doFilter(App
> licationFilterChain.java:208)
>   at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChai
> n(AbstractShiroFilter.java:449)
>   at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(Abst
> ractShiroFilter.java:365)
>   at org.apache.shiro.subject.support.SubjectCallable.doCall(
> SubjectCallable.java:90)
>   at org.apache.shiro.subject.support.SubjectCallable.call(Subjec
> tCallable.java:83)
>   at org.apache.shiro.subject.support.DelegatingSubject.execute(
> DelegatingSubject.java:383)
>   at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInt
> ernal(AbstractShiroFilter.java:362)
>   at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(O
> ncePerRequestFilter.java:125)
>   at org.apache

Re: Exceptions

2016-11-07 Thread Erik de Hair


On 11/07/2016 09:57 AM, Martin Grigorov wrote:

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.

The TextChoiceProvider is writing to the outputstream. Is that what you 
wanted to know?


"http-bio-8080-exec-10@22498" daemon prio=5 tid=0x44 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
  at 
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:196)
  at 
org.apache.wicket.protocol.http.servlet.ServletWebResponse.write(ServletWebResponse.java:135)
  at 
org.apache.wicket.protocol.http.HeaderBufferingWebResponse.write(HeaderBufferingWebResponse.java:196)
  at 
org.apache.wicket.request.Response$StreamAdapter.write(Response.java:148)

  at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
  at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
  at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
  - locked <0x57e8> (a java.io.OutputStreamWriter)
  at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:135)
  at java.io.OutputStreamWriter.write(OutputStreamWriter.java:220)
  at java.io.Writer.write(Writer.java:157)
  at org.apache.wicket.ajax.json.JSONWriter.key(JSONWriter.java:212)
  at 
org.wicketstuff.select2.TextChoiceProvider.toJson(TextChoiceProvider.java:38)
  at 
org.wicketstuff.select2.AbstractSelect2Choice.onResourceRequested(AbstractSelect2Choice.java:473)
  at 
org.wicketstuff.select2.Select2Choice.onResourceRequested(Select2Choice.java:36)
  at 
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:498)
  at 
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
  at 
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
  at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
  at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
  at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
  at 
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
  at 
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
  at 
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
  at 
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
  at 
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
  at 
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
  at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  at 
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
  at 
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
  at 
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
  at 
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
  at 
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
  at 
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
  at 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
  at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
  at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
  at 
org.apache.catalina.core.StandardHostValve.invoke(S

Re: Common way for deploying isis apps

2016-11-07 Thread Martin Grigorov
Hi,

Isis simpleapp (and any other demo app) has config for Jetty-Console:

 
org.simplericity.jettyconsole
jetty-console-maven-plugin



createconsole



${basedir}/src/main/jettyconsole/isis-banner.png

${project.build.directory}/${project.build.finalName}-jetty-console.jar

package





This is handy to start the app from .jar.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Nov 7, 2016 at 6:58 AM, Kevin Meyer  wrote:

> Hi,
> I haven't tried in a while, but I used to use the shade plugin to create a
> standalone jar.
> Cheers,
> Kevin
>
>
> On 6 November 2016 23:46:54 CET, Bilgin Ibryam  wrote:
> >Hi all,
> >
> >I was wondering what is the most common way for running isis apps?
> >I know while developing I can use jetty plugin or the WebServer
> >classes, but what about for running it on other environments?
> >
> >For my semat app I have used the .war file in a tomcat instance. And
> >ll that in a docker container.
> >You can see my pom.xml used for building docker container and running
> >at [1] and the demo app running at [2]
> >
> >Also noticed that with tomcat 9 the app was throwing lot's of errors
> >with some not allowed cookie values, so moved back to tomcat 7.
> >
> >Is anyone running isis w/o a web container, as standalone Java app?
> >How do you package the app in the case?
> >
> >
> >[1] https://github.com/bibryam/semat/blob/master/pom.xml
> >[2] http://semat.ofbizian.com/
> >
> >Cheers,
>
> --
> Sent from my phone with K-9 Mail.
> Please excuse my brevity.
>


Re: Exceptions

2016-11-07 Thread Martin Grigorov
On Mon, Nov 7, 2016 at 9:55 AM, Martin Grigorov 
wrote:

> Hi,
>
> On Mon, Nov 7, 2016 at 9:44 AM, Erik de Hair  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://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 

Re: Exceptions

2016-11-07 Thread Martin Grigorov
Hi,

On Mon, Nov 7, 2016 at 9:44 AM, Erik de Hair  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://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(
> SubjectCallable.java:90)
> org.apache.shiro.subject.support.SubjectCallable#call(Subjec
> tCallable.java:83)
> org.apache.shiro.subject.support.DelegatingSubject#execute(
> DelegatingSubject.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(
> JIoEndpoint.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#
> run(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.


> org.apache.catalina.connector.ResponseFacade#getWriter(Respo
> nseFacade.java:213)
> org.apache.wicket.

Exceptions

2016-11-07 Thread Erik de Hair

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)


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(RequestListenerInterface.java:237)

org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#invokeListener(ListenerInterfaceRequestHandler.java:250)
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler#respond(ListenerInterfaceRequestHandler.java:236)
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890)
org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261)
org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218)
org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289)
org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259)
org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201)
org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282)
org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:208)
org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449)
org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365)
org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90)
org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83)
org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383)
org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362)
org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125)
org.apache.catalina.core.ApplicationFilterChain#internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain#doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardWrapperValve#invoke(StandardWrapperValve.java:220)
org.apache.catalina.core.StandardContextValve#invoke(StandardContextValve.java:122)
org.apache.catalina.authenticator.AuthenticatorBase#invoke(AuthenticatorBase.java:503)
org.apache.catalina.core.StandardHostValve#invoke(StandardHostValve.java:170)
org.apache.catalina.valves.ErrorReportValve#invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:950)
org.apache.catalina.core.StandardEngineValve#invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAdapter.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(JIoEndpoint.java:314)
java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#run(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)

org.apache.catalina.connector.ResponseFacade#getWriter(ResponseFacade.java:213)
org.apache.wicket.protocol.http.servlet.ServletWebResponse#sendRedirect(ServletWebResponse.java:280)
org.apache.wicket.protocol.http.HeaderBufferingWebResponse#sendRedirect(HeaderBufferingWebResponse.java:117)
org.apache.wicket.request.handler.render.WebPageRenderer#redirectTo(WebPageRenderer.java:176)
org.apache.wicket.request.handler.render.WebPageRenderer#respond(WebPageRenderer.java:242)
org.apache.wicket.core.request.handler.RenderPageRequestHandler#respond(RenderPageRequestHandler.java:175)
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890)
org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)
org.apache.wicket.request.cycle.RequestCycle#executeExceptionRequestHandler(RequestCycle.java:310)
org.apache.wicket.request.