response.flushBuffer() не работает

Я пытаюсь реализовать сервлет для потоковой передачи больших объектов:

    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();
    }

Этот код предполагает отправку данных клиенту по частям. Теперь происходит то, что когда я транслирую большой объект (100 МБ), память увеличивается, и сервер иногда умирает, если есть более одной параллельной загрузки/потока.

Почему этот flushBuffer()не отправляет данные клиенту? Клиент получает всплывающее окно для открытия/сохранения файла только после закрытия ответа.

6
задан Andrea Ligios 22 May 2013 в 15:53
поделиться