file upload - java.lang.IllegalStateException: getWriter() has already been called for this response -
hi trying download file web service, getting file service getting exception @ line getting servlet response writer, , not know whats causing problem.
private void downloadfile(httpservletrequest request, httpservletresponse response) { servletoutputstream servletstream; try { if (fileimpl == null) { fileimpl = new filehandlerimplservice(); } if (service == null) { service = fileimpl.getfilehandlerimplport(new mtomfeature()); } string filename = request.getparameter("filename"); byte[] data = service.downloadfile(filename, request.getsession().getattribute("user").tostring().trim()); file file = new file(filename); outputstream outstream = new fileoutputstream(file); bufferedoutputstream bufferstream = new bufferedoutputstream(outstream); bufferstream.write(data); bufferstream.close(); string mimetype = getservletcontext().getmimetype(file.getabsolutepath()); response.setcontenttype(mimetype != null ? mimetype : "application/octet-stream"); response.setcontentlength((int) file.length()); response.setheader("content-disposition", "attachment; filename=\"" + filename + "\""); inputstream inputstream = new fileinputstream(file); servletstream = response.getoutputstream(); byte[] bufferdata = new byte[1024*1024]; int read = 0; while ((read = inputstream.read(bufferdata)) != -1) { servletstream.write(bufferdata, 0, read); } servletstream.flush(); servletstream.close(); inputstream.close(); file.deleteonexit(); response.sendredirect("downloadfile.jsp"); } catch (exception e) { e.printstacktrace(); } }
here exception getting
severe: java.lang.illegalstateexception: getwriter() has been called response @ org.apache.catalina.connector.response.getoutputstream(response.java:746) @ org.apache.catalina.connector.responsefacade.getoutputstream(responsefacade.java:206) @ servlets.filerequesthandler.downloadfile(filerequesthandler.java:90) @ servlets.filerequesthandler.processrequest(filerequesthandler.java:58) @ servlets.filerequesthandler.dopost(filerequesthandler.java:200) @ javax.servlet.http.httpservlet.service(httpservlet.java:707) @ javax.servlet.http.httpservlet.service(httpservlet.java:790) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:99) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:357) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:260) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:188) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:191) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:168) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:189) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:288) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:206) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:136) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:114) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:838) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:113) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:115) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:55) @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable.run(workerthreadiostrategy.java:135) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.dowork(abstractthreadpool.java:564) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpool.java:544) @ java.lang.thread.run(thread.java:744) info: visiting unvisited references info: visiting unvisited references info: visiting unvisited references info: loading application [jigarjoshiwebclient] @ [/jigarjoshiwebclient] info: jigarjoshiwebclient deployed in 481 milliseconds.
you should move data logic off servlet dataaccesslayer.
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/servletresponse.html