olá a todos,
estou tentando gerar um relatório pra minha página Web.
Fiz um Servlet, fiz o relatório no IReport e fiz uma action (estou usando Struts).
O problema eh q, qndo ele gera o pdf, o mesmo vem em branco, nao aparece nenhuma linha do relatório, só q não consegui descobrir o pq dele nao aparecer nada 
Segue o código do servlet:
public class RelatorioRender extends HttpServlet {
private static Connection con2 = null;
private static final String CONTENT_TYPE = "application/pdf";
public static final String PARAMETERS = "PARAMETERS";
public static final String JASPER_URL = "JASPER_URL";
private Logger log;
public void init() throws ServletException {
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("Wait while loadding Report...");
if (request.getAttribute(JASPER_URL) != null) {
response.setContentType(CONTENT_TYPE);
HashMap params = null;
if (request.getAttribute(PARAMETERS) != null) {
if (request.getAttribute(PARAMETERS) instanceof HashMap) {
params = (HashMap) request.getAttribute(PARAMETERS);
}
}
String jasperUrl = (String) request.getAttribute(JASPER_URL);
Connection conn = getConexao();
OutputStream ops = null;
String host = "http://" + request.getServerName() + ":"
+ request.getServerPort();
URL jasper = new URL(host + jasperUrl);
try {
System.out.println("Getting the binary...");
byte[] bytes = JasperManager.runReportToPdf(
jasper.openStream(), params, conn);
ops = response.getOutputStream();
System.out.println("Writting binary");
ops.write(bytes);
System.out.println("Sending report...");
} catch (JRException ex) {
ex.printStackTrace();
forward(request, response, ex.getMessage());
} finally {
if (ops != null) {
ops.flush();
ops.close();
}
try {
conn.close();
} catch (SQLException ex1) {
ex1.printStackTrace();
forward(request, response, ex1.getMessage());
}
}
} else {
forward(request, response, "JASPER_URL nao foi passado!");
}
}
private Connection getConexao() throws ServletException {
return getConnetion();
}
private void forward(HttpServletRequest request,
HttpServletResponse response, String message) throws IOException,
ServletException {
request.setAttribute("erro", message);
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/relatorio/home.jsp");
rd.forward(request, response);
}
public static Connection getConnetion() {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
con2 = DriverManager.getConnection("jdbc:mysql://localhost/portal",
"root", "");
con2.setAutoCommit(true);
} catch (SQLException e) {
System.out.println("Erro: " + (String) e.getMessage());
}
return con2;
}
}
E a Action:
public class BoletoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Associado as = (Associado) request.getSession().getAttribute("usuario");
int id = as.getId();
System.out.println("usuario=" + id);
if (new Integer(id) != null) {
HashMap map = new HashMap();
map.put("ID", new Integer(id));
map.put("URL", "http://" + request.getServerName() + ":"
+ request.getServerPort() + request.getContextPath() + "/");
request.setAttribute(RelatorioRender.JASPER_URL,request.getContextPath()+ "/relatorio/caixa.jasper");
request.setAttribute(RelatorioRender.PARAMETERS, map);
return new ActionForward("/boleto");
} else {
return forward(request, response, "Erro no relatorio!");
}
}
private ActionForward forward(HttpServletRequest request,
HttpServletResponse response, String message) throws IOException,
ServletException {
request.setAttribute("erro", message);
return new ActionForward("/relatorio/home.jsp");
}
}