Eu consegui montar um ServLet que gera o relatório!!!
Mas está acontecendo uma coisa estranha que é a seguinte:
O meu sevlet consegue ler o arquivo .jasper e montar o arquivo .pdf mas quando chega no response.sendRedirect(“Relatorio.pdf”) aparece um código maluco! Mas quando eu vou até o diretório o arquivo .pdf está perfeito, com todos os campos do banco e tudo mais!
Veja o erro:
%PDF-1.4 %âãÏÓ 6 0 obj <> stream xœµ”Ájƒ@†ïûsL/vwÖÝ5^J“6…@ $ÞJÖ±$L¤ÏÛS_£»1µë ±"È ³ÿ|ÿ2üs2 ªóö„`Gng ˜®6dt¼“Çz …hW?„‚:œƒò<‡‹ò0§æ0=µä Mãý1ÏF¬úØT--ŸÂayyÕõšh%¥Ø!ù©Ú’U[£ÇÆçFS™Ævl&(W:t2ó³á_fÖAÛ®m˜kÒnCzšÓ$ó¯p‚Geüìó-O£ETäi/'hsò¢<ýºëk†r‹™û^ü5é&ÿ*=‹°7¿ÂÂ?}øëÒÃl’ä6øŸMšô2Ám&þi‰$á–¨.=ȹžttfqt$V.Bô9LbÝšm®ž"°cDWæý¼š¾ ha {ìrs?6ÙæÅô]0éSås“eH©ÛÁö Ž€f endstream endobj 1 0 obj <> >> /MediaBox [0 0 595 842] >> endobj 8 0 obj [1 0 R /XYZ 0 854 0] endobj 5 0 obj <> /Widths [600 0 0 0 0 600 0 0 0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 600 0 600 0 600 0 0 0 0 0 600 0 0 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600] >> endobj 4 0 obj <> /Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 667 0 0 0 611 0 0 0 0 0 0 833 0 0 667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 556 500 0 556 278 556 0 222 0 0 0 0 0 556 0 0 333 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556] >> endobj 3 0 obj <> /Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 500 500 500 0 500 500 0 500 278 0 0 0 0 0 0 0 667 667 0 0 0 0 0 0 389 0 0 889 0 0 0 0 667 0 611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 0 0 0 0 0 278 0 500 500 0 0 333 389 278 500] >> endobj 2 0 obj <> endobj 7 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj xref 0 13 0000000000 65535 f 0000000428 00000 n 0000002518 00000 n 0000001997 00000 n 0000001303 00000 n 0000000663 00000 n 0000000015 00000 n 0000002614 00000 n 0000000627 00000 n 0000002670 00000 n 0000002724 00000 n 0000002758 00000 n 0000002821 00000 n trailer <<89645e931e124c6b3c986fe97f651ef0>] /Root 11 0 R /Size 13 /Info 12 0 R >> startxref 2966 %%EOF
veja o meu código:
[code]import javax.servlet.;
import javax.servlet.http.;
import dori.jasper.engine.*;
import dori.jasper.engine.JasperManager;
import dori.jasper.engine.JasperReport;
import dori.jasper.engine.JasperPrint;
import dori.jasper.view.JasperViewer;
import java.util.;
import java.util.HashMap;
import java.sql.;
import java.io.*;
public class testeServlet extends HttpServlet {
private static final String drive = "sun.jdbc.odbc.JdbcOdbcDriver";
private static final String url = "jdbc:odbc:GCM_Teste";
private static final String login = "gcmuadmi";
private static final String passwd = "Achiles";
String caminhoJasper = "/JRun4/servers/GcmFinal/default-ear/default-war/RelatorioCentros.jasper";
String caminhoPDF = "/JRun4/servers/GcmFinal/default-ear/default-war/";
String arquivoPDF = "RelatorioCentro.pdf";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
Class.forName(drive);
Connection con = DriverManager.getConnection(url,login,passwd);
Statement stm = con.createStatement();
JasperPrint impressao = JasperManager.fillReport(caminhoJasper, new HashMap(), con);
JasperManager.printReportToPdfFile(impressao, caminhoPDF + arquivoPDF);
response.sendRedirect("/" + arquivoPDF);
}
catch(Exception e){
System.out.print(e);
}
}
}
[/code]
Alguêm sabe o porquê deste erro?
Obrigado!