Olá galera, estou com um problema chato aqui! Tenho uma aplicação Web que deve gerar alguns relatórios a partir de ManagedBeans. Até aqui tudo ok! O problema é que a rotina de geração do relatório está travando a aplicação. Quando a linha 10 é executada, um aplicativo chamado org.apache.catalina.startup.Bootstrap abre no Dock. Quando a linha 11 é executada, o método fillReport não retorna e a aplicação trava e não responde mais!
Código do bean:
public void gerarRelatorio(ActionEvent e) throws SQLException, JRException, IOException {
try {
Class.forName("com.mysql.jdbc.Driver"); // 1
FacesContext contexto = FacesContext.getCurrentInstance(); // 2
String caminhoRelatorio = contexto.getExternalContext().getRealPath("/resources/relatorios/rel_participantes.jasper"); // 3
Map<String, Object> params = new HashMap<String, Object>(); // 4
Properties connectionProps = new Properties(); // 5
Connection conexaoBanco = null; // 6
params.put("ID_EVENTO", eventoSelecionado.getIdtEvento()); // 7
connectionProps.put("user", "root"); // 8
conexaoBanco = DriverManager.getConnection("jdbc:mysql://localhost:3306/SisEventosDB", connectionProps); // 9
JasperReport rel = (JasperReport) JRLoader.loadObject(caminhoRelatorio); // 10
JasperPrint print = JasperFillManager.fillReport(rel, params, conexaoBanco); // 11
((HttpServletResponse)contexto.getExternalContext().getResponse()).addHeader("Content-disposition", "attachment; filename=Relatorio_Presenca.pdf");
JasperExportManager.exportReportToPdfStream(print, FacesContext.getCurrentInstance().getExternalContext().getResponseOutputStream()); // 12
MessageHelper.showGlobalMessage(">> " + rel.getFields().length, FacesMessage.SEVERITY_INFO); // 13
} catch (ClassNotFoundException ex) {
}
}
Xml do relatório:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="SisEventos_RelatorioEvento" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="ID_EVENTO" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[1]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select idt_evento, nme_evento, dta_inicio_evento, dta_termino_evento, nme_participante, eml_participante from tb_inscricao as t1
inner join tb_evento as t2 on t1.cod_evento = t2.idt_evento
inner join tb_participante as t3 on t1.cod_participante = t3.idt_participante
where t1.cod_evento = $P{ID_EVENTO}
group by t2.nme_evento order by t2.dta_inicio_evento asc;]]>
</queryString>
<field name="idt_evento" class="java.lang.Integer"/>
<field name="nme_evento" class="java.lang.String"/>
<field name="dta_inicio_evento" class="java.sql.Timestamp"/>
<field name="dta_termino_evento" class="java.sql.Timestamp"/>
<field name="nme_participante" class="java.lang.String"/>
<field name="eml_participante" class="java.lang.String"/>
<group name="gEventos">
<groupExpression><![CDATA[$F{nme_evento}]]></groupExpression>
<groupHeader>
<band height="42">
<rectangle>
<reportElement x="25" y="21" width="530" height="20" forecolor="#666666" backcolor="#666666"/>
</rectangle>
<staticText>
<reportElement x="35" y="21" width="267" height="20" forecolor="#FFFFFF"/>
<textElement textAlignment="Left" verticalAlignment="Middle"/>
<text><![CDATA[Participante]]></text>
</staticText>
<staticText>
<reportElement x="302" y="21" width="186" height="20" forecolor="#FFFFFF"/>
<textElement textAlignment="Left" verticalAlignment="Middle"/>
<text><![CDATA[E-mail]]></text>
</staticText>
<staticText>
<reportElement x="488" y="21" width="68" height="20" forecolor="#FFFFFF"/>
<textElement textAlignment="Left" verticalAlignment="Middle"/>
<text><![CDATA[Presente]]></text>
</staticText>
<textField isStretchWithOverflow="true">
<reportElement x="0" y="1" width="270" height="20"/>
<textElement>
<font size="14" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA["Evento: " + $F{nme_evento}]]></textFieldExpression>
</textField>
<line>
<reportElement x="270" y="12" width="280" height="1"/>
</line>
</band>
</groupHeader>
<groupFooter>
<band height="50"/>
</groupFooter>
</group>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="60" splitType="Stretch">
<rectangle>
<reportElement x="0" y="0" width="200" height="60" forecolor="#E6E6E6" backcolor="#E6E6E6"/>
</rectangle>
<staticText>
<reportElement x="0" y="0" width="200" height="60" forecolor="#666666" backcolor="#FFFFFF"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="Arial" size="30"/>
</textElement>
<text><![CDATA[SisEventos]]></text>
</staticText>
<staticText>
<reportElement x="200" y="35" width="355" height="25"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="Arial" size="18" isBold="true" isUnderline="false"/>
</textElement>
<text><![CDATA[Relatório de Participantes dos Eventos]]></text>
</staticText>
<line>
<reportElement x="200" y="59" width="355" height="1"/>
</line>
</band>
</title>
<pageHeader>
<band height="14" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<rectangle>
<reportElement x="25" y="0" width="530" height="20" forecolor="#E6E6E6" backcolor="#E6E6E6">
<printWhenExpression><![CDATA[$V{COLUMN_COUNT}%2==0]]></printWhenExpression>
</reportElement>
</rectangle>
<textField isStretchWithOverflow="true">
<reportElement x="34" y="0" width="267" height="20"/>
<textElement textAlignment="Left" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{nme_participante}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true">
<reportElement x="302" y="0" width="185" height="20"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{eml_participante}]]></textFieldExpression>
</textField>
<rectangle radius="10">
<reportElement x="500" y="2" width="15" height="15"/>
</rectangle>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="355" y="0" width="200" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA["Página "+$V{PAGE_NUMBER}+" de "+ $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="EEE, dd MMM yyyy - HH:mm:ss" isBlankWhenNull="true">
<reportElement x="0" y="0" width="200" height="20"/>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA["Impresso em: " + new java.util.Date().toLocaleString()]]></textFieldExpression>
</textField>
<line>
<reportElement x="0" y="0" width="555" height="1"/>
</line>
</band>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>