iReport …gerando relatório da erro Cannot forward after response has been committed
Olá,
estou usando um servlet e uma classe com interface para gerar relatório
com jasper mais está me dando o erro abaixo
Até gera o relatório mas não estou visualizando onde dá esse erro ???
Se alguém puder me ajudar …
abs
09/02/2009 18:03:38 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at br.com.XXX.relatorio.servlet.ServletAction.service(ServletAction.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
public class R01Action implements Action {
EntityManager manager = null;
private EntityManagerFactory emf = null;
private static final String CONTENT_TYPE_PDF = "application/pdf";
OutputStream ops = null;
public R01Action(){
}
public String execute(HttpServletRequest request,HttpServletResponse response) throws SQLException, IOException {
System.out.println("Wait while loadding Report...");
emf = Persistence.createEntityManagerFactory("XXX");
manager = emf.createEntityManager();
Session session = (Session) manager.getDelegate();
Connection con = session.connection();
try{
Map parameters = new HashMap();
System.out.println("Tipo de Grupo = "+request.getParameter("tipo_grupo"));
parameters.put("tipo_grupo", Long.valueOf(request.getParameter("tipo_grupo")));
String jasper = request.getContextPath()+ "/reports/XXXGrupo001.jasper";
String host = "http://" + request.getServerName() + ":" + request.getServerPort();
URL jasperURL = new URL(host + jasper);
System.out.println("Getting the binary...");
response.setContentType(CONTENT_TYPE_PDF);
byte[] bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), parameters, con);
if (bytes != null) {
ops = response.getOutputStream();
System.out.println("Writting binary");
ops.write(bytes);
System.out.println("Sending report...");
}
} catch (JRException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}finally{
con.close();
manager.close();
emf.close();
if (ops != null) {
ops.flush();
ops.close();
}
try {
con.close();
} catch (SQLException ex1) {
ex1.printStackTrace();
}
}
return null;
}
}
public class ServletAction extends HttpServlet {
RequestDispatcher rd=null;
public ServletAction() {
}
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
String acao = req.getParameter("acao");
Class clazz = Class.forName("br.com.relatorio.action." + acao + "Action");
Action action = (Action) clazz.newInstance();
String Mapping = action.execute(req,resp);
rd = req.getRequestDispatcher(Mapping);
rd.forward(req,resp);
}catch(Exception e){
req.setAttribute("erro", e);
rd = req.getRequestDispatcher("/pagina/erro.jsp");
rd.forward(req,resp);
System.out.println("Erro="+e);
}
}
}