Problema com Jasper Reports e Servlet

0 respostas
F

Estou começando a trabalhar com Ireport e Jasper, tenho dois relatórios feitos no Ireport que geraram dois arquivos .jasper que já estão no meu projeto.

Estou usando o servlet abaixo, está dando erro http 500:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:36
root cause

Coloquei um printStackTrace() e retornou:
net. sf.jasperreports.engine.JRException: java.lang.reflect.InvocationTargetException

Quando compilei vi que o erro acontece quando tenta carregar o arquivo jasper. Marquei a linha do meu código onde a execução para. Alguém pode me dar uma luz? Ou mesmo me passar um Servlet que posso usar? Valeu…

package Relatorios;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

public class Relatorios extends HttpServlet {

public static Connection con;
public static String banco = “banco”; // Nome do banco de dados
public static String usuario = “usuario”; // Usuario do banco
public static String senha = “senha”; // Senha

protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

String datainicial = req.getParameter(“dataini”);
String datafinal = req.getParameter(“datafim”);

conexao(); // Faz a conexão

// Na variavel pathJasper ficara o caminho do diretório para

// os relatórios compilados (.jasper)

String pathJasper = getServletContext().getRealPath(

/WEB-INF/classes/Relatorios)
  • “\”;
    // A variavel path armazena o caminho real para o contexto
    // isso é util pois o seu web container pode estar instalado em lugares diferentes
    String path = getServletContext().getRealPath("/");
    // Parametros do relatorio
    Map parametros = new HashMap();
    // O único parametro que devemos passar é o PathRelAutores
    // é o caminho pro RelAutores.jasper (que foi subtituido pelo
    // valor fixo “D:/iReport-0.4.0/RelAutores.jasper”)
parametros.put(CAMINHO, pathJasper + Soma.jasper);

parametros.put(DATAINI, datainicial);

parametros.put(DATAFIM, datafinal);

try {

// (AQUI ELE DÁ ERRO!!!)
JasperPrint impressao = JasperFillManager.fillReport(pathJasper

  • “Faturamento.jasper”, parametros, con);

// Grava o relatório em disco em pdf
JasperManager.printReportToPdfFile(impressao, path

  • “/RelatorioLivros.pdf”);
    // Redireciona para o pdf gerado
    res.sendRedirect(“RelatorioLivros.pdf”);
    } catch (Exception e) {
    res.getWriter().println("Erro ao gerar o relatório: " + e);
    }
    }
    // Cria a conexão
    public void conexao() {
    try {
    if (con == null || con.isClosed()) {
    Class.forName(“com.mysql.jdbc.Driver”);
    con = DriverManager.getConnection(
    “jdbc:mysql://192.168.3.5:3306/” + banco, usuario, senha);
    }
    } catch (Exception e) {
    System.out.println(“não foi possível conectar ao banco ->”);
    e.printStackTrace();
    }
    }
    protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
    throws ServletException, IOException {
    doPost(arg0, arg1);
    }
    }
Criado 3 de maio de 2008
Respostas 0
Participantes 1