Skip navigation
2012

Há vários meses que venho recebendo o alerta getOutputStream() has already been called for this response no meu log do JBoss AS 7 quando envio um relatório PDF (gerado pelo iText) do servidor para o cliente.

 

Após pesquisas realizadas no passado concluí que eu poderia ignorar o alerta, pois ele não representava nenhum risco aparente. Apesar disso não havia encontrado uma solução para ao menos evitar que esta mensagem incoveniente desaparecesse dos meus logs.

 

Entretanto em uma nova pesquisa encontrei a solução. Segundo o Ramki Java Blog, depois que o pdf é escrito na resposta HTTP, o próprio servlet JSF tenta "re-abrir" a resposta para escrever o HTML renderizado do estágio de renderização do ciclo de vida do JSF. Portanto a solução é dizer ao JSF que a resposta está completa e para pular o resto do ciclo. Para isso é necessário apenas inserir o seguinte código ao final do método que escreve o PDF:

 

 

FacesContext.getCurrentInstance().responseComplete();  

De acordo com Remy Maucherat na requisição do suporte à compressão gzip aberta por mim na JBoss Issues (https://issues.jboss.org/browse/AS7-2991) a funcionalidade solicitada já foi incluída na próxima versão do JBoss AS, 7.1.1, que deve ser lançada em breve (acredito que nas próximas semanas).

 

De acordo com a documentação oficial, para habilitar o suporte é necessário adicionar a propriedade org.apache.coyote.http11.Http11Protocol.COMPRESSION dentro da tag system-properties, como demonstrado no exemplo abaixo:

 

<server name="xyz.home" xmlns="urn:jboss:domain:1.0">
    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
        <extension module="org.jboss.as.clustering.jgroups"/>
        <extension module="org.jboss.as.connector"/> 
        ....
        <extension module="org.torquebox.web"/>
    </extensions>
    <system-properties>
        <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="true"/>
</system-properties>

 

Assim que eu tiver acesso à versão 7.1.1 postarei minhas primeiras impressões.