Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] getOutPutStrem() exception

    Salve a tutti.
    Sto facendo un progetto j2ee, ora, ho una servlet che mi crea un pdf e lo butta in output.
    uso il getOutputStrem per far in modo che compaia il salva con nome nel browser.


    codice:
              
    ..code..    
    esponse.setContentType("application/pdf");
    response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
    ..code..
    ora, ogni tanto mi da questa eccezione (il programma funzia lo stesso, ma vorrei toglierla),
    come posso fare??

    codice:
    GRAVE: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    	at org.apache.catalina.connector.Response.getWriter(Response.java:604)
    	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
    	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
    	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    	at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173)
    	at org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:893)
    	at org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:465)
    	at org.apache.jsp.layout.Layout_jsp._jspx_meth_tiles_005finsert_005f0(Layout_jsp.java:125)
    	at org.apache.jsp.layout.Layout_jsp._jspService(Layout_jsp.java:76)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
    	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:557)
    	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:481)
    	at org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1105)
    	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:292)
    	at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:271)
    	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:332)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
    	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
    	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1078)
    	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:396)
    	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:347)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	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:175)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    	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:263)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:619)
    grazie ciao.

  2. #2
    Quando vuoi restituire un codice HTML normalmente scrivi un
    codice:
    OutputStream out = response.getWriter();
    Quando vuoi restituire un qualsiasi formato diverso il modo è lo stesso, poi cambi eventualmente il content-type e le varie intestazioni.
    Dall'eccezione si direbbe che hai richiesto due volte l'oggetto OutputStream... la seconda normalmente restituisce proprio quell'eccezione...
    Se il problema è diverso allora scrivi un codice un po' più significativo, l'errore di sicuro non sta in quelle due righe li
    Windows 7 x64 + Ubuntu Linux 10.10 (Default)
    In principio era il C...
    C/C++ & C# & JavaSE/EE Developer

  3. #3
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    codice:
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
    JasperExportManager.exportReportToPdfStream(impress,response.getOutputStream());
    response.getOutputStream ().close();
    credo sia colpa del response.getOutputStream();

  4. #4
    Prova a togliere questo pezzo di codice:
    codice:
    response.getOutputStream ().close();
    Oppure se proprio devi tenerlo prova a chiamare una sola volta getOutputStream():
    codice:
    OutputStream out = response.getOutputStream();
    JasperExportManager.exportReportToPdfStream(impress, out);
    out.close();
    Windows 7 x64 + Ubuntu Linux 10.10 (Default)
    In principio era il C...
    C/C++ & C# & JavaSE/EE Developer

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Ho rimesso mano al tutto ma ho sempre lo stesso problema.
    Ora, nessuno reisce ad usare l'outputStream?
    se si come?
    il codice della mia jsp è questa (è una actionBean di struts richiamata da una jsp).
    codice:
       Logger logger = Logger.getLogger(this.getClass().getName());
            SqlMapSingleton sqlMap = new SqlMapSingleton();
            CreaQuestionario que = (CreaQuestionario)form;
            int t_rep = Integer.parseInt(request.getParameter("r"));
            String rel1;
            String rel2;
            Map parametri;
            JasperPrint impress;
            ArrayList lista = null;
            DomandaReport dr = null;
            RispostaReport rr = null;
            List l_domande = null;
            DataSource ds =null;
            Context initCtx = null;
            Context envCtx =  null;
            javax.sql.DataSource datas = null;
            
            ServletOutputStream servletOutputStream = response.getOutputStream();
    //code for jasperReports like initialising jasperPrint...
            
            
            
            ServletContext context = request.getSession().getServletContext();
            
    //sempre per le lingue, in modo da nn avare report vuoti se nn trova il testo nella lingua in uso.
            List lingue = sqlMap.getSqlMap().queryForList("get_id_Lingua_Questionario_from_id_questionario",""+que.getId_questionario());
            if (! (lingue.contains(""+que.getId_lingua()))){
                String id_l = ""+lingue.get(0);
                que.setId_lingua(Integer.parseInt(id_l));
            }
            switch (t_rep){
                case 1:
                    rel1 = context.getRealPath("report/QO_report_risposte_utente.jasper");
                    parametri = new HashMap();
                    initCtx = new InitialContext();
                    envCtx = (Context) initCtx.lookup("java:comp/env");
                    datas = (javax.sql.DataSource) envCtx.lookup("jdbc/QO");
                    parametri.put("idLingua",""+que.getId_lingua());
                    parametri.put("idQuestionario",""+que.getId_questionario());
                    impress=JasperFillManager.fillReport(rel1, parametri, datas.getConnection());
                    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
                    JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
                    
                    break;
                case 2:
                    lista = new ArrayList();
                    l_domande = sqlMap.getSqlMap().queryForList("get_Domande_Chiuse_from_Questionario",new ArgQuery(""+que.getId_questionario(),""+que.getId_lingua()));
                    for (int i=0;i<l_domande.size();i++){
                        dr = (DomandaReport)l_domande.get(i);
                        ArrayList risp = new ArrayList();
                        List l_risp_tutte = sqlMap.getSqlMap().queryForList("get_Tutte_Risposte_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
                        risp.addAll(l_risp_tutte);
                        List l_risp_date = sqlMap.getSqlMap().queryForList("get_Risposte_Date_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
                        risp.addAll(l_risp_date);
                        dr.setRisposte(risp);
                        lista.add(dr);
                    }
                    rel1 = context.getRealPath("report/QO_report_percentuali.jasper");
                    rel2 = context.getRealPath("report/QO_report_percentuali_subreport0.jasper");
                    ds = new DataSource(lista);
                    parametri = new HashMap();
                    parametri.put("pathSubRel",rel2);
                    impress = JasperFillManager.fillReport(rel1, parametri, ds);
                    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition","attachment; filename=Report_domande_chiuse.pdf");
                    JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
                    break;
                case 3:
                    lista = new ArrayList();
                    l_domande = sqlMap.getSqlMap().queryForList("get_Domande_Aperte_from_Questionario",new ArgQuery(""+que.getId_questionario(),""+que.getId_lingua()));
                    for (int i=0;i<l_domande.size();i++){
                        dr = (DomandaReport)l_domande.get(i);
                        ArrayList risp = new ArrayList();
                        List l_risp_date = sqlMap.getSqlMap().queryForList("get_Risposte_Date_Domanda",new ArgQuery(""+dr.getId_domanda(),""+que.getId_lingua()));
                        risp.addAll(l_risp_date);
                        dr.setRisposte(risp);
                        lista.add(dr);
                    }
                    rel1 = context.getRealPath("report/QO_report_testo.jasper");
                    rel2 = context.getRealPath("report/QO_report_testo_subreport0.jasper");
                    ds = new DataSource(lista);
                    parametri = new HashMap();
                    parametri.put("pathSubRel",rel2);
                    impress = JasperFillManager.fillReport(rel1, parametri, ds);
                    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition","attachment; filename=Report_domande_aperte.pdf");
                    JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
                    break;
                case 4:
                    rel1 = context.getRealPath("report/QO_questionario_contatto.jasper");
                    parametri = new HashMap();
                    initCtx = new InitialContext();
                    envCtx = (Context) initCtx.lookup("java:comp/env");
                    datas = (javax.sql.DataSource) envCtx.lookup("jdbc/QO");
                    parametri.put("idLingua",""+que.getId_lingua());
                    parametri.put("idQuestionario",""+que.getId_questionario());
                    impress=JasperFillManager.fillReport(rel1, parametri, datas.getConnection());
                    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition","attachment; filename=Report_utenti.pdf");
                    JasperExportManager.exportReportToPdfStream(impress,servletOutputStream);
                    break;
                default:
                    return mapping.findForward(KO);
                    
            }
            servletOutputStream.flush();
            servletOutputStream.close();
            return mapping.findForward(OK);
            
        }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.