Pessoal, desculpe reativar o tópico. 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. Segui os passos do tutorial do arquivo em pdf: mini tutorial…pdf. No Ireport o relatório ficao show. Mas quando vou chamá-lo pelo Servlet dá problema.
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
Print Stack Trace:
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);
}
}