java.net.SocketException: Unexpected end of file from server
Bonjour a tous,
Je veut télécharger mes fichiers sous forme de flux, et lors de la récupération de mon flux a partir du serveur j'ai cette exception, mais je lé seulement si je dépasse 200 fichiers :
Code:
1 2 3 4 5 6 7 8 9
|
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:766)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1000)
at fr.efl.els.frontweb.controller.SearchSimpleController.getUploadElement(SearchSimpleController.java:1269)
at org.apache.jsp.html.jsp.result.telechargeNew_jsp._jspService(telechargeNew_jsp.java:51) |
Voici le code de l'appelle :
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 41 42 43 44 45 46 47 48 49 50
|
news = new URL(adresse);
if (LOGGER.isDebugEnabled())
LOGGER.debug("-------****** news: " + news);
HttpURLConnection urlconnection = (HttpURLConnection)news.openConnection();
urlconnection.setDoOutput(true);
urlconnection.setDoInput(true);
urlconnection.setUseCaches (false);
urlconnection.setDefaultUseCaches (false);
urlconnection.setChunkedStreamingMode(chunk_size);
urlconnection.setRequestProperty("uris", sb.toString());
urlconnection.setReadTimeout(0);
OutputStreamWriter out = new OutputStreamWriter(urlconnection.getOutputStream());
out.write(sb.toString());
InputStream is = urlconnection.getInputStream();
int f = -1;
File tmpFile = File.createTempFile("documentation", ".zip");
byte buf[] = new byte[buf_size];
int length = 0;
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tmpFile));
while ((length = is.read(buf)) > 0) {
bos.write(buf, 0, length);
}
bos.close();
is.close();
LOGGER.info("-------****** response: " + response.getOutputStream().toString());
response.setContentType("application/zip");
response.addHeader("Content-Disposition", "attachment; filename=" + tmpFile.getName());
response.setHeader("Cache-Control","max-age=" + 90000);
response.addHeader("Content-description","My Description");
byte[] docfile = loadFile(tmpFile.getPath());
response.setContentLength(docfile.length);
f = -1;
is = new FileInputStream(tmpFile);
copy(is, response.getOutputStream());
response.getOutputStream().flush();
is.close(); |
Sachant que j'ai augmenté la taille mémoire de la JVM et celle de catalina, et mettre les timeout a 60 minutes.
Merci d'avance de vous réponse