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
Post a Comment