Pessoal, estou com um problema no weblogic…
Tenho um código que gera um relatório e o disponibiliza para o download na web…
No entanto, ao gerar o relatório acontece a seguinte exception:
java.net.ProtocolException: Exceeded stated content-length of: '1991' bytes
at weblogic.servlet.internal.ServletOutputStreamImpl.checkCL(ServletOutputStreamImpl.java:219)
at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:166)
at com.telefonica.sirs.update.reports.ReportsBuilder.exportPDFReport(ReportsBuilder.java:134)
at com.telefonica.sirs.update.reports.ReportsBuilder.executeReporteMigracionDatos(ReportsBuilder.java:98)
at com.telefonica.sirs.update.reports.MigrationReport.buildAndExecuteReport(MigrationReport.java:67)
Truncated. see log file for complete stacktrace
Estou usando o seguinte código para gerar o relatório
static void executeReporteMigracionDatos(ReportNames jasper, String centralName,
String userProcess, String dateProcess, List<? extends Object> reportFields,
ServletContext context, HttpServletResponse response)
throws IOException, JRException, IllegalArgumentException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("centralName", centralName);
parameters.put("dateProcess", dateProcess);
parameters.put("userProcess", userProcess);
File reportFile = new File(context.getRealPath("path dos arquivos .jasper"
+ jasper.name().concat(".jasper")));
System.out.println("Arquivo para o relatório " + reportFile.getName());
InputStream reportStream = new FileInputStream(reportFile);
JRDataSource beanReport = new JRBeanCollectionDataSource(reportFields);
JasperPrint print = JasperFillManager.fillReport(reportStream, parameters, beanReport);
System.out.println("Jasper Print " + print.getName());
// Verificando o tipo do relatório que será gerado
switch (jasper) {
case Reporte_Migracion_PDF:
exportPDFReport(print, reportFile, response);
break;
case Reporte_Migracion_XLS:
exportXLSReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_SNU_PDF:
exportPDFReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_SNU_XLS:
exportXLSReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_LEN_PDF:
exportPDFReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_LEN_XLS:
exportXLSReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_CSS_PDF:
exportPDFReport(print, reportFile, response);
break;
case Reporte_Eventos_Rechazos_CSS_XLS:
exportXLSReport(print, reportFile, response);
break;
default :
throw new IllegalArgumentException("The parameter[jasper] = " + jasper.name() +
" is not a valid type of supported reports");
}
}
private static void exportPDFReport(JasperPrint print, File reportFile,
HttpServletResponse response) throws JRException, IOException {
byte[] pdfBytes = JasperExportManager.exportReportToPdf(print);
if (pdfBytes != null && pdfBytes.length > 0) {
response.setContentType("application/pdf");
String fileName = reportFile.getName().replace("_PDF", "").replace(".jasper", "").trim();
response.setHeader("Content-Disposition", "attachment;filename="+fileName+".pdf");
response.setContentLength(pdfBytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(pdfBytes, 0, pdfBytes.length);
JasperExportManager.exportReportToPdfStream(print, outputStream);
}
}
Alguém tem alguma idéia do motivo deste erro?
Grato desde já