Servlet + Jasperreport

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 :frowning:
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");
	}

}

Antes de mais nada, você já testou se o seu relatório está correto, mostrando os dados e tudo mais?

se eu rodo soh o relatório (Pelo IReport) ele funciona… soh qndo passo pra web q acontece isso…