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