Marjin,

Thanks, I suppose that solves part of my problem. The wait is only 1 sec or so, so using a lazy panel is a great idea, but does not eliminate my underliying problem. For instance the user can still press the refresh button causing the same exception and the same problem (some sort of corruption, things do not work well anymore, for example I have various wicket-ids that render differently but based on the same data and some of those stop rendering consistent things).

As I am not familiar with wicket yet, I am struggling to understand what's happening under the hood. I am also not too familiar with the threading model. However, I am not even sure it's concurrency problem yet.

Some of those parts using the same data that I have mentioned above are JFreeCharts and if I take those out, then the problem seems to go away completely. Even by putting a sleep 1000 in the rendering code for the list view (table), I cannot reproduce the problem (and not even the exception to be fair).

JFreeChartImage extends Image and I took the sample from https://cwiki.apache.org/WICKET/jfreechart-and-wicket-example.html


Thanks,

Tommy


----- Original Message ----- From: "Martijn Dashorst" <martijn.dasho...@gmail.com>
To: <users@wicket.apache.org>
Sent: Tuesday, June 29, 2010 8:05 AM
Subject: Re: org.apache.wicket.WicketRuntimeException: Unable to write the response


Don't let the user wait. Use a lazy panel to render the long stuff in
the background, or if it even takes longer than that, calculate your
model data in a background thread and use a timer to poll and see if
the thread has finished, and use the result in a panel that you
replace on your page.

Martijn

On Tue, Jun 29, 2010 at 8:45 AM,  <tomm...@lantaka.it> wrote:
Hello,

This is my first post. I am not a web developer, I usually develop other kinds of systems, but for a quick project I have to do, I looked at JSF and I really did not like it. Finally, I have come across wicket and it was love at first sight.

Now, so far everything has been straightforward, but I am now facing the first puzzle...

I have a page that takes a while to render and, while it's rendering, if the user does anything, then I get:

org.apache.wicket.WicketRuntimeException: Unable to write the response
at org.apache.wicket.Response.handleException(Response.java:286)
at org.apache.wicket.Response.write(Response.java:310)
at org.apache.wicket.request.target.resource.ResourceStreamRequestTarget.respond(ResourceStreamRequestTarget.java:160) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
at org.apache.wicket.RequestCycle.respond(RequestCycle.java:1267)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1334)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479) at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
.... etc ...
Caused by: EOFException(java.net.SocketException: Connection reset by peer: socket write error) at org.mortbay.http.BufferedOutputStream.flush(BufferedOutputStream.java:195) at org.mortbay.util.ByteBufferOutputStream.ensureSpareCapacity(ByteBufferOutputStream.java:342) at org.mortbay.util.ByteBufferOutputStream.write(ByteBufferOutputStream.java:182) at org.mortbay.http.BufferedOutputStream.write(BufferedOutputStream.java:135)
at org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java:442)
at org.mortbay.jetty.servlet.ServletOut.write(ServletOut.java:42)
at org.apache.wicket.util.io.Streams.copy(Streams.java:121)
at org.apache.wicket.util.io.Streams.copy(Streams.java:88)
at org.apache.wicket.Response.write(Response.java:306)
... 23 more

00:39:32.335 WARN!! Invalid length: Content-Length=9491 written=4096 for http://127.0.0.1:8081/quickstart/app/
ERROR - WicketFilter - closing the buffer error
java.lang.IllegalStateException
at org.mortbay.jetty.servlet.ServletHttpResponse.getWriter(ServletHttpResponse.java:540)
at org.apache.wicket.protocol.http.WebResponse.write(WebResponse.java:392)
.... etc ...

Now, this would be ok, I suppose. The user clicks something while wicket is sending stuff and that operation has to abort. However, this except really corrupts things, after this exception the web page behaves very strangely, some of wicket:ids do not update well anymore etc... In the book Wicket in Action it says that a page is single threaded and all I am doing here is using one single page, one sesion, two request, quickly one after the other, before the first one completes.

I am using: INFO - WebApplication - [QuickStartApplication] Started Wicket version 1.4.8 in development mode And I have downlowded a hello world project (quickstart) adapted it to 1.4.8 (generics pretty much) and not yet refactored things as I am concentrating on business logic for a quick prototype. The webserver is jetty.

Ok, sorry for the long post, and I hope someone of you will be able to give me a couple of hints/tips (tried to google it, but did not find much).


Thanks,

Tommy






--
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.4 increases type safety for web applications
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.8

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to