JasperReports e JBoss

2
 Fazendo Deploy de Relatórios JasperReports no JBoss Server Todos os arquivos .jar necessários devem ser colocados na pasta d e bibliotecas do diretório do servidor JBoss (Exemplo: "C:\JBoss\Server\Default\Lib"). Feito isto, define-se a variável de ambiente do JasperReports apontando-a para a localização da sua biblioteca dentro do servidor do JBoss. Exemplo: System.setProperty( "jasper.reports.compile.class.path", "C:\JBoss\server\default\lib\jasperreports-0.5.3.jar"); Exportando um Relatório JasperReports Hospedado no JBoss para HTML Recupere o fluxo de saída (output stream) do objeto de resposta e grave o relatório neste stream sem salvar primeiro em disco. JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); JRHtmlExporter exporter = new JRHtmlExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter()); exporter.exportReport(); Extendendo a Solução Para evitar que relatórios JasperReports com figuras não sejam corretamente visualizados, um pouco mais de código deve ser implementada para que as imagens criadas nos relatórios sejam devidamente mapeadas dentro dos arquivos temporários criados pelo JasperReports durante a renderização de relatórios. Map imagesMap = new HashMap(); request.getSession().setAttribute("IMAGES_MAP", imagesMap); exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap); exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image.jsp?image="); O código da página "image.jsp" sera o seguinte: <%@page import="java.util.*" %> <%@page import="java.io.*" %> <% Map imagesMap = (Map)session.getAttribute("IMAGES_MAP"); if (imagesMap != null) { String imageName = request.getParameter("image"); if (imageName != null) { byte[] imageData = (byte[])imagesMap.get(imageName); response.setContentLength(imageData.length); ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(imageData, 0, imageData.length); outputStream.flush(); outputStream.close(); } } %> Considerações Finais É interessante fazer uso de uma versão atualizada da biblioteca commons-digester-1.7.jar, ou maior, para evitar problemas relacionados com os arquivos .jrxml dos relatórios no JBoss Server.

Transcript of JasperReports e JBoss

5/11/2018 JasperReports e JBoss - slidepdf.com

http://slidepdf.com/reader/full/jasperreports-e-jboss 1/2

Fazendo Deploy de Relatórios JasperReports no JBoss Server 

Todos os arquivos .jar necessários devem ser colocados na pasta de bibliotecas do diretório do servidor JBoss(Exemplo: "C:\JBoss\Server\Default\Lib").

Feito isto, define-se a variável de ambiente do JasperReports apontando-a para a localização da sua bibliotecadentro do servidor do JBoss.

Exemplo:System.setProperty(

"jasper.reports.compile.class.path", "C:\JBoss\server\default\lib\jasperreports-0.5.3.jar");

Exportando um Relatório JasperReports Hospedado no JBoss para HTML

Recupere o fluxo de saída (output stream) do objeto de resposta e grave o relatório neste stream sem salvar primeiro em disco.

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);

JRHtmlExporter exporter = new JRHtmlExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());

exporter.exportReport();

Extendendo a SoluçãoPara evitar que relatórios JasperReports com figuras não sejam corretamente visualizados, um pouco mais decódigo deve ser implementada para que as imagens criadas nos relatórios sejam devidamente mapeadasdentro dos arquivos temporários criados pelo JasperReports durante a renderização de relatórios.

Map imagesMap = new HashMap();request.getSession().setAttribute("IMAGES_MAP", imagesMap);exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image.jsp?image=");

O código da página "image.jsp" sera o seguinte:

<%@page import="java.util.*" %><%@page import="java.io.*" %>

<%Map imagesMap = (Map)session.getAttribute("IMAGES_MAP");if (imagesMap != null){

String imageName = request.getParameter("image");if (imageName != null){

byte[] imageData = (byte[])imagesMap.get(imageName);response.setContentLength(imageData.length);ServletOutputStream outputStream = response.getOutputStream();outputStream.write(imageData, 0, imageData.length);outputStream.flush();outputStream.close();

}}%>

Considerações FinaisÉ interessante fazer uso de uma versão atualizada da biblioteca commons-digester-1.7.jar, ou maior, paraevitar problemas relacionados com os arquivos .jrxml dos relatórios no JBoss Server.

5/11/2018 JasperReports e JBoss - slidepdf.com

http://slidepdf.com/reader/full/jasperreports-e-jboss 2/2