Estoy tratando de implementar un servlet para la transmisión de objetos de gran tamaño:response.flushBuffer() no está funcionando
oracle.sql.BLOB blob = rs.getBLOB('obj');
InputStream in = blob.getBinaryStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
ServletOutputStream out = response.getOutputStream();
int counter=0
while((length=in.read(buffer)) != -1){
out.write(buffer,0,length);
counter++;
if(counter % 10 == 0){
counter=0;
response.flushBuffer();
}
Este código suponer para enviar datos al cliente por trozo chunck. Ahora lo que sucede es que cuando reproduzco un objeto grande (100 MB), la memoria aumenta y el servidor muere a veces si hay más de una descarga/secuencia en paralelo.
¿Por qué este flushBuffer()
no está enviando datos al cliente? El cliente obtiene una ventana emergente para abrir/guardar archivo solo después de que se cierra la respuesta.
Además yo uso JOBSS 4.3 Sever para probar este código – Madhu
¿en algún lugar 'out.close()'? – Osw
sí lo hago out.close() pero no pegado aquí – Madhu