Olá pessoal.
Seguinte, eu quero colocar numa aplicação, geração automática de um relatório, (iReport), para .xls diretamente no response do browser. Tudo ok quando rodo no servidor de aplicação da minha máquina (JBoss 5.1.0 e Tomcat 6.17). Porém quando gero este relatório no servidor de aplicação em produção, o arquivo vem vazio.
o código:
[code] private void writeRelatorio(final String fileName, final byte[] bytes) throws ServletException, IOException{
try {
// gera diretamente no response para o browser.
final FacesContext context = FacesContext.getCurrentInstance();
final ExternalContext external = context.getExternalContext();
final HttpServletResponse response = (HttpServletResponse) external.getResponse();
response.setContentType("application/octet-stream");
response.setContentLength(bytes.length);
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
response.setHeader("Expires","");
response.setHeader("Content-Disposition", "inline; filename=\"" + fileName + "\"");
response.setHeader("Content-transfer-encoding", "binary");
// geração dos dados na saída e em seguida libera os buffers de gravação.
final ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();
out.close();
context.responseComplete();
} catch (final Exception e) {
LOG.error("Erro no envio do relatório via browser.", e);
}
}[/code]
Já olhei os logs do Tomcat e do JBoss em produção e nada referente ao caso.
Abs.