Sto cercando di implementare un servlet per lo streaming di oggetti di grandi dimensioni:response.flushBuffer() non funziona
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();
}
Questo codice supponiamo di inviare dati al pezzo client chunck. Ora, ciò che accade è che quando flusso l'oggetto di grandi dimensioni (100 MB), la memoria sale e il server muore a volte se ci sono più di un download/stream parallelo.
Perché questo flushBuffer()
non invia dati al client? Il client diventa popup per aprire/salvare il file solo dopo la chiusura della risposta.
Inoltre ho utilizzare JOBSS 4.3 sever per testare questo codice – Madhu
vieni da qualche parte 'out.close()'? – Osw
sì io faccio out.close() ma non incollato qui – Madhu