Hi Andre, These files can be huge (for a few of my clients). It can take more than an hour for the entire file to be generated. I just didn't want to save them. I was expecting that if the file was too big, the process would just be aborted. As it is now, my webapp keeps working eventhough no browser is receiving the data. I guess I will have to save them (In S3) an notify my client via e-mail when the file is available. I'll also ask Amazon about it.
Thank you, -Jorge On Thu, Jul 9, 2015 at 2:06 AM, André Warnier <a...@ice-sa.com> wrote: > Tecno Brain wrote: > >> I am running Tomcat 8.0.20 in Ubuntu with Java 1.8u45 >> This server runs in Amazon EC2 behind an ELB (load balancer), although the >> cluster size is just one server. >> >> My application allows to download some data in CSV format. >> The CSV data is generated on the fly, and there is no way to known in >> advance the size of the response. So, the data is an attachment. >> >> response.setContentType("text/csv;charset=utf-8"); >> >> filename = "data.csv" >> >> response.setHeader("Content-Disposition", "attachment; filename=\"" + >> filename + ".csv\""); >> >> >> The download starts immediately but after 100 MB the browser stopped >> received data -my internet connection was not the best-, so I canceled the >> download as it was not progressing anymore. >> >> Nevertheless, my web app keeps generating the CSV data, unaware that the >> connection has been dropped. I was expecting that my code would get an >> IOException when writing to the servlet OutputStream (which was wrapped by >> a BufferedOutputStream and wrapped by an OutputStreamWriter). >> >> Is this a problem I can solve through the configuration of the NIO >> connector ? >> Or is this a problem of Amazon ELB that still consumes the stream even >> though it can't be forwarded to the browser anymore? >> > > Yes, that kind of thing. There may also be load-balancers, proxies, > gateways, etc. between Tomcat and the end-user browser. > As long as Tomcat itself is able to write to that connection, there is no > way for an application within Tomcat, to even find out that the ultimate > client has gone away. > > >> I don't remember having this problem when working with Apache HTTP as the >> load balancer. If I remember correctly, I would get an error indicating >> that the client closed the connection. >> > > Yes, in some cases, because then there was less buffering in-between. > > >> Any pointers are appreciated. >> >> > If your generated files are really that big, I would suggest that the > Tomcat side writes them to disk to a temporary file, and then returns to > the client a short response, with a link where it can retrieve that file. > Then there could be a separate cleanup procedure, which cleans up such > temporary files when they are more than a certain age. > > > > -Jorge >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >