[Tomcat 7] Erreur "connection reset outputstream"
Bonjour,
Je suis en cours d'installation d'un serveur, et je migre de tomcat 5.5 a tomcat 7.0.37 . J'ai une sevlet d'affichage d'image dans laquelle j'ai juste rajouter une anotation puisque l'appel "servlet" n'est plus en tomcat7.
Lorsque je charge des fichiers JPG de 5Mo en troisieme niveau dans mon programme j'ai sur ma nouvelle machine un connection reset au milieu de ma boucle ! Mon code de copie vers ServletOutputStream me semble correct, et il fonctionnait en tomcat5.5. Une idée ?
Merci d'avance
Phil
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
ClientAbortException: java.net.SocketException: Connection reset
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:388)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:462)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:413)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:401)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
at servletgallery01.UtilServlet.dumpFile(UtilServlet.java:363)
at servletgallery01.ImagesServlet.doPost(ImagesServlet.java:347)
at servletgallery01.ImagesServlet.doGet(ImagesServlet.java:130)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662) |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
public long dumpFile(String s, OutputStream outputstream) {
String s1 = s;
int l=4096;
byte abyte0[] = new byte[l];
long rt = -1;
logInfo("dumpFile01");
logInfo("dumpFile02 s1=" + s1);
try {
File f2=lookupFile(s1);
long t=0;
if (f2.exists() && (f2.length() > 0)) {
logInfo("dumpFile04");
BufferedInputStream bufferedinputstream = new BufferedInputStream(new FileInputStream(f2));
int i;
logInfo("dumpFile05");
while ((i = bufferedinputstream.read(abyte0, 0, l)) != -1) {
logInfo("dumpFile06 i="+i);
outputstream.write(abyte0, 0, i); //Erreur ICI en tomcat7
logInfo("dumpFile07 i="+i);
t=t+i;
}
logInfo("dumpFile09");
bufferedinputstream.close();
}
logInfo("dumpFile10 t="+t);
rt =t;
} catch (Exception exception) {
logError("dumpFile Error s=" + s+" exception="+exception.getMessage());
exception.printStackTrace();
rt = -1;
}
logInfo("dumpFile19");
return rt;
} |