OK,
it was a spurious span inside a link that cancelled the request for me...
<a href="#" wicket:id="resource"><span
onclick="setTimeout('window.location.reload()', 1000);return
true;">link</span></a>
Apparently you always have a 8kb buffer you can write to even when
another request comes in.
Consider this case closed.
Martijn
On 10/3/06, Johan Compagner <[EMAIL PROTECTED]> wrote:
and that is exactly the number of bytes that it sent to the client?
what about tomcat?
johan
On 10/3/06, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
>
> mimeType "application/zip"
> length 24550
>
>
> On 10/3/06, Matej Knopp <[EMAIL PROTECTED]> wrote:
> > What does the response header say?
> >
> > Martijn Dashorst wrote:
> > > It is not a Jetty 5 specific bug, as in Jetty 6.0.1 I get this
> exception.
> > >
> > > [2006-10-03 14:16:47,759] [btpool0-5] RequestCycle.step(1010) | method
> > > IResourceListener of interface wicket.IResourceListener targetted at
> > > component [MarkupContainer [Component id = aanmaken, page =
> > > nl.topicus.iridium.web.gui.financieel.incasso.IncassoRunTonenPage,
> > > path = 3:aanmaken.IncassoRunTonenPage$5, isVisible = true, isVersioned
> > > = false]] threw an exception
> > > wicket.WicketRuntimeException: method IResourceListener of interface
> > > wicket.IResourceListener targetted at component [MarkupContainer
> > > [Component id = aanmaken, page =
> > > nl.topicus.iridium.web.gui.financieel.incasso.IncassoRunTonenPage,
> > > path = 3:aanmaken.IncassoRunTonenPage$5, isVisible = true, isVersioned
> > > = false]] threw an exception
> > > at
> > > wicket.request.target.resource.ComponentResourceRequestTarget.respond(
> ComponentResourceRequestTarget.java:68)
> > >
> > > at
> > > wicket.request.compound.DefaultResponseStrategy.respond(
> DefaultResponseStrategy.java:49)
> > >
> > > at
> > > wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(
> AbstractCompoundRequestCycleProcessor.java:66)
> > >
> > > at
> > > wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:869)
> > > at
> > > wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:896)
> > > at wicket.RequestCycle.step(RequestCycle.java:977)
> > > at wicket.RequestCycle.steps(RequestCycle.java:1051)
> > > at wicket.RequestCycle.request(RequestCycle.java:455)
> > > at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java
> :215)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > at
> > > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > at
> > > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java
> :356)
> > > at
> > > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java
> :226)
> > > at
> > > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java
> :627)
> > > at
> > > org.mortbay.jetty.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:149)
> > >
> > > at
> > > org.mortbay.jetty.handler.HandlerCollection.handle(
> HandlerCollection.java:123)
> > >
> > > at
> > > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java
> :141)
> > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > at
> > > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java
> :430)
> > > at
> > > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(
> HttpConnection.java:687)
> > >
> > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java
> :199)
> > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java
> :339)
> > > at
> > > org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java
> :270)
> > > at
> > > org.mortbay.thread.BoundedThreadPool$PoolThread.run(
> BoundedThreadPool.java:475)
> > >
> > > Caused by: java.lang.reflect.InvocationTargetException
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > at
> > > sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
> > >
> > > at
> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
> > >
> > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > at
> > > wicket.request.target.resource.ComponentResourceRequestTarget.respond(
> ComponentResourceRequestTarget.java:64)
> > >
> > > ... 25 more
> > > Caused by: wicket.WicketRuntimeException: Unable to render resource
> > > stream [EMAIL PROTECTED]
> > > at wicket.Resource.respond(Resource.java:279)
> > > at wicket.Resource.onResourceRequested(Resource.java:135)
> > > at
> > > wicket.markup.html.link.ResourceLink.onResourceRequested(
> ResourceLink.java:124)
> > >
> > > ... 30 more
> > > Caused by: org.mortbay.jetty.EofException
> > > at
> > > org.mortbay.jetty.HttpGenerator.flushBuffers(HttpGenerator.java:856)
> > > at
> > > org.mortbay.jetty.HttpGenerator$Output.flush(HttpGenerator.java:1069)
> > > at
> > > org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:764)
> > > at wicket.Resource.respond(Resource.java:245)
> > > ... 32 more
> > > Caused by: java.nio.channels.ClosedChannelException
> > > at
> > > sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java
> :125)
> > > at sun.nio.ch.SocketChannelImpl.write0(SocketChannelImpl.java
> :323)
> > > at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java
> :354)
> > > at java.nio.channels.SocketChannel.write(SocketChannel.java
> :360)
> > > at
> > > org.mortbay.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:238)
> > > at
> > > org.mortbay.jetty.nio.HttpChannelEndPoint.flush(
> HttpChannelEndPoint.java:140)
> > >
> > > at
> > > org.mortbay.jetty.HttpGenerator.flushBuffers(HttpGenerator.java:778)
> > > ... 35 more
> > >
> > >
> > > On 10/3/06, Johan Compagner <[EMAIL PROTECTED]> wrote:
> > >> are you sure that the client/browser doesn't close the socket
> somehow?
> > >> broken pipe or clientabort exceptions seems to me that the browser
> > >> shutdown
> > >> the request
> > >> because the user closes the browser or did already go to another page
> or
> > >> canceld the request.
> > >> Or the browser things that it already has it all? Because or the
> content
> > >> lenght that is set? (just a guess)
> > >>
> > >> johan
> > >>
> > >>
> > >> On 10/3/06, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
> > >> >
> > >> > The exception occurs when copying the byte array into the output
> > >> > stream, right after 8192 bytes have been copied. It feels like a
> jetty
> > >> > bug, but I am not certain at this point.
> > >> >
> > >> > from wicket.util.io.Streams
> > >> >
> > >> > public static int copy(final InputStream in, final
> OutputStream
> > >> > out)
> > >> > throws IOException
> > >> > {
> > >> > final byte[] buffer = new byte[4096];
> > >> > int bytesCopied = 0;
> > >> > while (true)
> > >> > {
> > >> > int byteCount = in.read(buffer, 0,
> > >> buffer.length);
> > >> > if (byteCount <= 0)
> > >> > {
> > >> > break;
> > >> > }
> > >> > out.write(buffer, 0, byteCount);
> > >> > bytesCopied += byteCount;
> > >> > }
> > >> > return bytesCopied;
> > >> > }
> > >> >
> > >> >
> > >> > On 10/3/06, Martijn Dashorst <[EMAIL PROTECTED]> wrote:
> > >> > > When I generate a dynamic web resource and it is about 7.2kb,
> > >> > > generating and downloading the resource goes OK. When I create a
> > >> > > (much) larger download, rendering the resource breaks with a
> broken
> > >> > > pipe error.
> > >> > >
> > >> > > Does anyone know what happens here? I attached the stacktraces I
> get.
> > >> > >
> > >> > >
> > >> > > wicket.WicketRuntimeException: method IResourceListener of
> interface
> > >> > > wicket.IResourceListener targetted at component [MarkupContainer
> > >> > > [Component id = aanmaken, page =
> > >> > > nl.topicus.iridium.web.gui.financieel.incasso.IncassoRunTonenPage
> ,
> > >> > > path = 8:aanmaken.IncassoRunTonenPage$5, isVisible = true,
> > >> isVersioned
> > >> > > = false]] threw an exception
> > >> > > at
> > >> >
> wicket.request.target.resource.ComponentResourceRequestTarget.respond(
> > >> > ComponentResourceRequestTarget.java:68)
> > >> > > at
> wicket.request.compound.DefaultResponseStrategy.respond(
> > >> > DefaultResponseStrategy.java:49)
> > >> > > at
> > >> >
> wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(
> > >> > AbstractCompoundRequestCycleProcessor.java:66)
> > >> > > at wicket.RequestCycle.doProcessEventsAndRespond(
> > >> > RequestCycle.java:869)
> > >> > > at
> > >> wicket.RequestCycle.processEventsAndRespond(RequestCycle.java
> > >> > :896)
> > >> > > at wicket.RequestCycle.step(RequestCycle.java:977)
> > >> > > at wicket.RequestCycle.steps(RequestCycle.java:1051)
> > >> > > at wicket.RequestCycle.request(RequestCycle.java:455)
> > >> > > at
> > >> wicket.protocol.http.WicketServlet.doGet(WicketServlet.java
> > >> > :215)
> > >> > > at
> > >> javax.servlet.http.HttpServlet.service(HttpServlet.java:596)
> > >> > > at
> > >> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > >> > > at org.mortbay.jetty.servlet.ServletHolder.handle(
> > >> > ServletHolder.java:428)
> > >> > > at
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(
> > >> > WebApplicationHandler.java:473)
> > >> > > at org.mortbay.jetty.servlet.ServletHandler.handle(
> > >> > ServletHandler.java:568)
> > >> > > at org.mortbay.http.HttpContext.handle(HttpContext.java
> :1530)
> > >> > > at org.mortbay.jetty.servlet.WebApplicationContext.handle
> (
> > >> > WebApplicationContext.java:633)
> > >> > > at org.mortbay.http.HttpContext.handle(HttpContext.java
> :1482)
> > >> > > at org.mortbay.jetty.plus.PlusWebAppContext.handle(
> > >> > PlusWebAppContext.java:158)
> > >> > > at org.mortbay.http.HttpServer.service(HttpServer.java
> :909)
> > >> > > at
> > >> org.mortbay.http.HttpConnection.service(HttpConnection.java
> > >> > :816)
> > >> > > at org.mortbay.http.HttpConnection.handleNext(
> > >> > HttpConnection.java:982)
> > >> > > at org.mortbay.http.HttpConnection.handle(
> HttpConnection.java
> > >> > :833)
> > >> > > at org.mortbay.http.SocketListener.handleConnection(
> > >> > SocketListener.java:244)
> > >> > > at org.mortbay.util.ThreadedServer.handle(
> ThreadedServer.java
> > >> > :357)
> > >> > > at org.mortbay.util.ThreadPool$PoolThread.run(
> ThreadPool.java
> > >> > :534)
> > >> > > Caused by: java.lang.reflect.InvocationTargetException
> > >> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > >> Method)
> > >> > > at sun.reflect.NativeMethodAccessorImpl.invoke(
> > >> > NativeMethodAccessorImpl.java:39)
> > >> > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > >> > DelegatingMethodAccessorImpl.java:25)
> > >> > > at java.lang.reflect.Method.invoke(Method.java:585)
> > >> > > at
> > >> >
> wicket.request.target.resource.ComponentResourceRequestTarget.respond(
> > >> > ComponentResourceRequestTarget.java:64)
> > >> > > ... 24 more
> > >> > > Caused by: wicket.WicketRuntimeException: Unable to render
> resource
> > >> > > stream [EMAIL PROTECTED]
> > >> > > at wicket.Resource.respond(Resource.java:279)
> > >> > > at wicket.Resource.onResourceRequested(Resource.java:135)
> > >> > > at
> wicket.markup.html.link.ResourceLink.onResourceRequested(
> > >> > ResourceLink.java:124)
> > >> > > ... 29 more
> > >> > > Caused by: EOFException(java.net.SocketException: Broken pipe)
> > >> > > at org.mortbay.http.BufferedOutputStream.flush(
> > >> > BufferedOutputStream.java:206)
> > >> > > at
> > >> org.mortbay.util.ByteBufferOutputStream.ensureSpareCapacity(
> > >> > ByteBufferOutputStream.java:357)
> > >> > > at org.mortbay.util.ByteBufferOutputStream.write(
> > >> > ByteBufferOutputStream.java:197)
> > >> > > at org.mortbay.http.BufferedOutputStream.write(
> > >> > BufferedOutputStream.java:146)
> > >> > > at
> > >> org.mortbay.http.HttpOutputStream.write(HttpOutputStream.java
> > >> > :423)
> > >> > > at org.mortbay.jetty.servlet.ServletOut.write(
> ServletOut.java
> > >> > :54)
> > >> > > at wicket.util.io.Streams.copy(Streams.java:56)
> > >> > > at wicket.Resource.respond(Resource.java:240)
> > >> > > ... 31 more
> > >> > >
> > >> > >
> > >> > > --
> > >> > > <a
> > >> href="http://www.thebeststuffintheworld.com/vote_for/wicket">Vote</a>
> > >> > > for <a href="http://www.thebeststuffintheworld.com/stuff/wicket
> > >> > ">Wicket</a>
> > >> > > at the <a href="http://www.thebeststuffintheworld.com/">Best
> Stuff in
> > >> > > the World!</a>
> > >> > >
> > >> >
> > >> >
> > >> > --
> > >> > <a
> > >> href="http://www.thebeststuffintheworld.com/vote_for/wicket">Vote</a>
> > >> > for <a href="http://www.thebeststuffintheworld.com/stuff/wicket
> > >> > ">Wicket</a>
> > >> > at the <a href="http://www.thebeststuffintheworld.com/">Best Stuff
> in
> > >> > the World!</a>
> > >> >
> > >>
> > >>
> > >
> > >
> >
> >
>
>
> --
> <a href="http://www.thebeststuffintheworld.com/vote_for/wicket">Vote</a>
> for <a href="http://www.thebeststuffintheworld.com/stuff/wicket
> ">Wicket</a>
> at the <a href="http://www.thebeststuffintheworld.com/">Best Stuff in
> the World!</a>
>
--
<a href="http://www.thebeststuffintheworld.com/vote_for/wicket">Vote</a>
for <a href="http://www.thebeststuffintheworld.com/stuff/wicket">Wicket</a>
at the <a href="http://www.thebeststuffintheworld.com/">Best Stuff in
the World!</a>