Avoiding java.lang.IllegalStateException in jsp -


i try download generated pdf in jsp.but log shows following error.how can avoid error.my code , error following

list<sdo> sdolist = new arraylist<sdo>();        try{         sdolist = traveladvancerequest.generatepdf(objsession,objlist); //calling service         infomsg="pdf generation success";         if (sdolist != null) {             stringtype stringmsg = (stringtype) sdolist.get(0);             infomsg="pdf generation success......";             system.out.println("pdf generation success......");             system.out.println("file path===========>>"+stringmsg.getstring());             servletoutputstream op          =response.getoutputstream();           //throw new illegalstateexception("myexception");         string filename = stringmsg.getstring() == null ? "" : stringmsg.getstring();         file                f           =   new file(filename);                  int                 length      =   0;          servletcontext      context     =   getservletconfig().getservletcontext();         string              mimetype    =   context.getmimetype( filename );         if(f.isfile()){             response.setcontenttype( (mimetype != null) ? mimetype : "application/octet-stream" );              response.setcontentlength( (int)f.length() );             response.setheader( "content-disposition", "attachment; filename=\"axis template "+strcurrency+" account.pdf\"" );             byte[] bbuf = new byte[1000];             datainputstream in = new datainputstream(new fileinputstream(f));         while ((in != null) && ((length = in.read(bbuf)) != -1))             {                 op.write(bbuf,0,length);             }              in.close();             response.getoutputstream().flush();            // op.flush();             op.close();              return;         }else{             system.out.println("exception throws there no such file in directory : "+filename);         }      }      }catch(illegalstateexception e1)     {         system.out.println("illegal state exception......"+e1.getmessage());         }     catch(exception e)     {         system.out.println("error in pdf creation......"+e.getmessage());         errmsg=e.getmessage();      }  java.lang.illegalstateexception: getoutputstream() has been called response     @ org.apache.catalina.connector.response.getwriter(response.java:619)     @ org.apache.catalina.connector.responsefacade.getwriter(responsefacade.java:198)     @ org.apache.jasper.runtime.jspwriterimpl.initout(jspwriterimpl.java:125)     @ org.apache.jasper.runtime.jspwriterimpl.flushbuffer(jspwriterimpl.java:118)     @ org.apache.jasper.runtime.pagecontextimpl.release(pagecontextimpl.java:188)     @ org.apache.jasper.runtime.jspfactoryimpl.internalreleasepagecontext(jspfactoryimpl.java:118)     @ org.apache.jasper.runtime.jspfactoryimpl.releasepagecontext(jspfactoryimpl.java:77)     @ org.apache.jsp.debitdetails_jsp._jspservice(debitdetails_jsp.java:374)     @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70)     @ javax.servlet.http.httpservlet.service(httpservlet.java:717)     @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:369)     @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:322)     @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:249)     @ javax.servlet.http.httpservlet.service(httpservlet.java:717)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.apache.tuscany.sca.host.webapp.tuscanyservletfilter.dofilter(tuscanyservletfilter.java:103)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.jboss.web.tomcat.filters.replyheaderfilter.dofilter(replyheaderfilter.java:96)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:235)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191)     @ org.jboss.web.tomcat.security.securityassociationvalve.invoke(securityassociationvalve.java:190)     @ org.jboss.web.tomcat.security.jacccontextvalve.invoke(jacccontextvalve.java:92)     @ org.jboss.web.tomcat.security.securitycontextestablishmentvalve.process(securitycontextestablishmentvalve.java:126)     @ org.jboss.web.tomcat.security.securitycontextestablishmentvalve.invoke(securitycontextestablishmentvalve.java:70)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:102)     @ org.jboss.web.tomcat.service.jca.cachedconnectionvalve.invoke(cachedconnectionvalve.java:158)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:330)     @ org.apache.coyote.http11.http11processor.process(http11processor.java:829)     @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:598)     @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:447)     @ java.lang.thread.run(unknown source) 

the reason you're getting error because you're doing logic jsp. jsp renders output using writer object of response, calling getoutputstream inside jsp well. therefore, you'll exception since you're trying use both outputstream , writer @ same time. haven't showed entire jsp code, i'm guessing you're doing output (maybe blank characters) after main logic. @vigneshvino says, should logic inside servlet instead. jsp should used render view.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -