Ver Mensaje Individual
  #455 (permalink)  
Antiguo 10/02/2006, 04:33
msi
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola a todo el mundo. He estado aprendiendo a usar Struts + jasperreport + iReport. Hace tiempo me leí todos los post de aquí y gracias a ello consigo generar mi informe en pdf.

Lo que no he conseguido aún es eliminar un error que me aparece en la consola Tomcat y por ello lo pregunto ahora. Antes generaba el reporte desde una clase Action de Struts e igual era por algún error mio pero ahora he creado un reporte simple que lo genero desde una página jsp. He aquí el código:

------------------------------------------------------------------
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ page import="java.util.*" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.data.*" %>
<%@ page import="net.sf.jasperreports.engine.fill.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.view.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>

<html:html>

<HEAD>
<TITLE></TITLE>
</HEAD>

<body>
<%
Connection conexion = null;
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dsPYC");
conexion = ds.getConnection();

HashMap parametros = new HashMap();
File reportFile = new File(application.getRealPath(File.separator+"repor ts"+File.separator+"pruebahosting.jasper"));

byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parametros, conexion);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>

</body>
</html:html>
-----------------------------------------------------------------------

El reporte se genera bien aunque me aparece el siguiente error en consola:

[ERROR] 20:30 (StandardWrapperValve.java:invoke:260)
Servlet.service() para servlet jsp lanzó excepción

java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta
at org.apache.catalina.connector.Response.getWriter(R esponse.java:596)
at org.apache.catalina.connector.ResponseFacade.getWr iter(ResponseFacade.java:186)
at org.apache.jasper.runtime.JspWriterImpl.initOut(Js pWriterImpl.java:124)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffe r(JspWriterImpl.java:117)
at org.apache.jasper.runtime.PageContextImpl.release( PageContextImpl.java:191)
at org.apache.jasper.runtime.JspFactoryImpl.internalR eleasePageContext(JspFactoryImpl.java:115)
at org.apache.jasper.runtime.JspFactoryImpl.releasePa geContext(JspFactoryImpl.java:75)
at org.apache.jsp.pages.pidediariosesiones1_jsp._jspS ervice(org.apache.jsp.pages.pidediariosesiones1_js p:163)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
....etc....


Podría pensar que es algo de la ruta del fichero .jasper pero descarto esa opción ya que he probado con otros códigos con el mismo resultado:

String path = session.getServletContext().getRealPath("/");
File reportFile = new File(path+File.separator+"reports"+File.separator+ "pruebahosting.jasper");

o incluso:

File reportFile = new File(request.getRealPath(File.separator+"reports"+ File.separator+""pruebahosting.jasper"));


¿Sabeis qué puede generar ese pequeño error? Uso Struts 1.2.4, Tomcat 5.5.9, jasperreports-1.0.1