При использовании GZIP общая длина сжатого содержимого заранее непредсказуема. Это известно только тогда, когда последний бит был сжат. В Tomcat ответ GZIP обычно напрямую отправляется кусками (с Transfer-Encoding: chunked
) и никогда заранее полностью не буферизируется в памяти, поскольку это может быть перебор памяти. Поэтому я не вижу способов получить длину содержимого заранее, кроме подсчета байтов, записанных в выходной поток самостоятельно, или ручной буферизации всего выходного потока ответа и ручной отправки / сброса его полностью при закрытии (что может быть перегрузкой памяти).