próbuję wdrożyć aplet do strumieniowego przesyłania dużych obiektów:response.flushBuffer() nie działa
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();
}
Ten kod przypuszczać, aby wysłać dane do kawałka klienta przez chunck. Teraz, gdy przesyłam duży obiekt (100 MB), pamięć rośnie, a serwer umiera czasami, jeśli jest więcej niż jeden równoległy plik do pobrania/stream.
Dlaczego ten flushBuffer()
nie wysyła danych do klienta? Klient otrzyma wyskakujące okienko do otwierania/zapisywania pliku dopiero po zamknięciu odpowiedzi.
Ponadto używam JOBSS 4,3 Sever do testowania tego kodu – Madhu
czy gdzieś 'out.close()'? – Osw
Tak, nie out.close(), ale nie wklejony tutaj – Madhu