Java HttpServletResponse Пусто только в Firefox
У нас есть Java-сервлет, который создает HTML-страницы для просмотра пользователями. В 99,9% случаев эти страницы открываются в IE, Chrome, Firefox, Opera, Safari, и мы не тестируем другие браузеры, но они, вероятно, тоже работают.
Однако очень редко они не открываются в Firefox.
В Firebug это заголовки ответа, возвращаемые, когда он не работает:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Tue, 24 Jul 2012 04:57:32 GMT
Он по-прежнему будет работать в других браузерах на той же машине, но обновление ничего не меняет.
В HTTPServletResponse мы устанавливаем следующие заголовки:
rp.setHeader( "Content-Disposition", "example.html" );
rp.setContentType( "text/html" );
Мы также использовали для установки длины контента, но я вынул это в отчаянии. Когда мы установили длину контента, это было сделано так:
final long size = getSize();
if (size > 0) {
rp.setHeader( "Content-Length", String.valueOf(size) );
}
и затем печать в HttpServletResponse выполняется следующим образом:
byte[] ab = new byte[ 4096 ];
int result = 0;
// Read from the BufferedOutputStream(buffer), and write to out(a ServletOutputStream).
while ( result != -1 ) {
result = buffer.read( ab, 0, 4096 );
if ( result != -1 ) {
if ( out == null ) {
out = rp.getOutputStream();
}
out.write( ab, 0, result );
}
}
Кто-нибудь сталкивался с чем-то подобным раньше? Это сводит меня с ума. Я не могу себе представить, что с кодом что-то не так, потому что он запускается сотни раз в день и очень редко дает сбой в Firefox, но, должно быть, с ним что-то не так, и я не могу понять, что за жизнь.
Извините, я не могу показать рабочий пример этой странности.
Спасибо
Эндрю