While using 1.1.5 with MS IE8 (not problems at all with FF) I noticed on
server console occasional errors (see below). These errors do no occur
every time, and if occur, they come as a series of warnings and errors
when the browser asks for a page. Also, same page can be accessed
without these errors. BTW, these errors do affect serving - pages are
served with or without them.
I also notices that if I touch that "compatibility" button in IE8 errors
seem to go away. It also seems that it does not matter in what mode you
are - important is to touch this button for the errors to go away.
If errors happen, they will typically start with this:
Jun 18, 2009 12:54:10 PM com.noelios.restlet.http.StreamServerCall <init>
WARNING: Unable to parse the HTTP request
like in
Jun 18, 2009 12:54:10 PM com.noelios.restlet.http.StreamServerCall <init>
WARNING: Unable to parse the HTTP request
java.io.IOException: Unable to parse the request method. End of stream
reached too early.
at
com.noelios.restlet.http.HttpServerCall.readRequestHead(HttpServerCall.java:347)
at
com.noelios.restlet.http.StreamServerCall.<init>(StreamServerCall.java:88)
at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServerHelper.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jun 18, 2009 12:54:10 PM com.noelios.restlet.http.HttpServerCall parseHost
INFO: Couldn't find the mandatory "Host" HTTP header.
Or, as I mentioned above, it can result in a longer output
Jun 18, 2009 12:53:10 PM com.noelios.restlet.http.StreamServerCall <init>
WARNING: Unable to parse the HTTP request
java.io.IOException: An existing connection was forcibly closed by the
remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at sun.nio.ch.SocketAdaptor$SocketInputStream.read(Unknown Source)
at sun.nio.ch.ChannelInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at
com.noelios.restlet.http.HttpServerCall.readRequestHead(HttpServerCall.java:340)
at
com.noelios.restlet.http.StreamServerCall.<init>(StreamServerCall.java:88)
at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServerHelper.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jun 18, 2009 12:53:10 PM com.noelios.restlet.http.HttpServerCall parseHost
INFO: Couldn't find the mandatory "Host" HTTP header.
Jun 18, 2009 12:53:10 PM com.noelios.restlet.http.HttpServerConverter commit
SEVERE: An exception occured writing the response entity
java.io.IOException: An existing connection was forcibly closed by the
remote host
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at java.nio.channels.Channels.write(Unknown Source)
at java.nio.channels.Channels.access$000(Unknown Source)
at java.nio.channels.Channels$1.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at
com.noelios.restlet.http.HttpServerCall.writeResponseHead(HttpServerCall.java:553)
at
com.noelios.restlet.http.StreamServerCall.writeResponseHead(StreamServerCall.java:201)
at
com.noelios.restlet.http.HttpServerCall.sendResponse(HttpServerCall.java:415)
at
com.noelios.restlet.http.HttpServerConverter.commit(HttpServerConverter.java:391)
at
com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:148)
at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServerHelper.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jun 18, 2009 12:53:10 PM com.noelios.restlet.http.HttpServerConverter commit
WARNING: Unable to send error response
java.io.IOException: An existing connection was forcibly closed by the
remote host
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at java.nio.channels.Channels.write(Unknown Source)
at java.nio.channels.Channels.access$000(Unknown Source)
at java.nio.channels.Channels$1.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at
com.noelios.restlet.http.HttpServerCall.writeResponseHead(HttpServerCall.java:553)
at
com.noelios.restlet.http.StreamServerCall.writeResponseHead(StreamServerCall.java:201)
at
com.noelios.restlet.http.HttpServerCall.sendResponse(HttpServerCall.java:415)
at
com.noelios.restlet.http.HttpServerConverter.commit(HttpServerConverter.java:409)
at
com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:148)
at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServerHelper.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Just reporting observations,
Serge
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2363375