Pendant que je télécharge un fichier volumineux (environ 50 Mo), j'obtiens org.Eclipse.jetty.io.EofException: Early EOF exception. Ma version du serveur de jetée est " 9.2.9.v20150224 ".
org.Eclipse.jetty.io.EofException: Early EOF
at org.Eclipse.jetty.server.HttpInput$3.noContent(HttpInput.Java:505) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.Eclipse.jetty.server.HttpInput.read(HttpInput.Java:124) ~[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]
at org.Apache.http.entity.InputStreamEntity.writeTo(InputStreamEntity.Java:142) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.Java:96) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.Java:112) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.Java:117) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.Java:265) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.Java:231) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.Java:237) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.Java:122) ~[httpcore-4.4.1.jar:4.4.1]
at org.Apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.Java:685) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:487) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.Java:882) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:117) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.Java:55) ~[httpclient-4.5.jar:4.5]
at org.Apache.http.client.HttpClient$execute$2.call(Unknown Source) ~[na:na]
org.Eclipse.jetty.io.EofException
at org.Eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.Java:192)
at org.Eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.Java:408)
at org.Eclipse.jetty.io.WriteFlusher.write(WriteFlusher.Java:302)
at org.Eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.Java:129)
at org.Eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.Java:676)
at org.Eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.Java:246)
at org.Eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.Java:208)
at org.Eclipse.jetty.server.HttpConnection.send(HttpConnection.Java:471)
at org.Eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.Java:763)
at org.Eclipse.jetty.server.HttpChannel.write(HttpChannel.Java:801)
at org.Eclipse.jetty.server.HttpOutput.write(HttpOutput.Java:142)
at org.Eclipse.jetty.server.HttpOutput.write(HttpOutput.Java:135)
at org.Eclipse.jetty.server.HttpOutput.flush(HttpOutput.Java:237)
at Java_io_Flushable$flush.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.Java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.Java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.Java:112)
at SendResponseFilter.writeResponse(SendResponse.groovy:128)
at SendResponseFilter$writeResponse.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.Java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.Java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.Java:145)
at SendResponseFilter.writeResponse(SendResponse.groovy:102)
at SendResponseFilter.run(SendResponse.groovy:59)
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.Java:112)
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.Java:197)
at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.Java:161)
at com.netflix.zuul.FilterProcessor.postRoute(FilterProcessor.Java:92)
at com.netflix.zuul.ZuulRunner.postRoute(ZuulRunner.Java:87)
at com.netflix.zuul.http.ZuulServlet.postRoute(ZuulServlet.Java:107)
at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.Java:88)
at realdoc.spider.SpiderServlet.service(SpiderServlet.Java:66)
at org.Eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.Java:808)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1669)
at com.netflix.zuul.context.ContextLifecycleFilter.doFilter(ContextLifecycleFilter.Java:40)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1652)
at org.Eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.Java:259)
at org.Eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.Java:222)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1652)
at org.Eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.Java:585)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:143)
at org.Eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.Java:577)
at org.Eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.Java:223)
at org.Eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.Java:1127)
at org.Eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.Java:515)
at org.Eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.Java:185)
at org.Eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.Java:1061)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:141)
at org.Eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.Java:97)
at org.Eclipse.jetty.server.Server.handle(Server.Java:497)
at org.Eclipse.jetty.server.HttpChannel.handle(HttpChannel.Java:310)
at org.Eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.Java:257)
at org.Eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.Java:540)
at org.Eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.Java:635)
at org.Eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.Java:555)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: Java.io.IOException: Broken pipe
at Sun.nio.ch.FileDispatcherImpl.writev0(Native Method)
at Sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.Java:51)
at Sun.nio.ch.IOUtil.write(IOUtil.Java:148)
at Sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.Java:504)
at org.Eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.Java:172)
... 55 more
Si quelqu'un a une idée à ce sujet, veuillez m'aider.
Ces traces de pile montrent simplement les résultats d'une terminaison de connexion, mais pas la raison pour laquelle elle s'est terminée.
Le Java.io.IOException: Broken pipe
Signifie que la connexion a été interrompue, de façon inattendue au niveau du système d'exploitation.
org.Eclipse.jetty.io.EofException
Pendant org.Eclipse.jetty.io.ChannelEndPoint.flush()
signifie que le contenu du corps de la réponse n'a pas pu terminer le vidage sur le réseau lorsque la connexion a été interrompue.
Le org.Eclipse.jetty.io.EofException: Early EOF
Pendant org.Eclipse.jetty.server.HttpInput.read()
signifie qu'en lisant activement la demande (pas clair si son contenu corporel ou les en-têtes de stacktrace) de la connexion (un Java.nio.channels.SocketChannel
Dans ce cas), il s'est terminée prématurément et la demande HTTP complète n'a pas été reçue (en-têtes et contenu du corps).
Il peut y avoir d'autres erreurs dans les journaux de votre client ou du serveur qui pourraient indiquer ce qui se passe.
Vous pouvez tester cette demande avec d'autres outils (comme curl) pour voir si c'est votre client, ou le réseau, ou Jetty. Vous pouvez également utiliser un outil tel que wirehark pour capturer le trafic réseau et voir d'où provient la terminaison de la connexion (client ou serveur)
Ce que j'ai trouvé dans le problème est que, dans l'en-tête http "Content-Length" venait comme quelque chose comme xxx, à cause du wifi Internet bâclé, avant que tout le contenu ne soit lu (moins de xxx), le flux était fermé et au-dessus de l'exception est levée .
Un autre problème est le délai d'expiration. Avant que le flux entier ne soit lu (car c'est un gros fichier), en raison du délai d'expiration, le flux est fermé prématurément et une exception est levée comme ci-dessus.
Il peut également y avoir d'autres raisons, mais j'ai rencontré ces problèmes.