In our application, we can download files in 2 formats excel and ods (Open document spreadsheet).
In implementation level:
Excel format uses xml i.e. when a excel download is invoked it gets data from database (executing multiple complex queries). Here, each query result is written directly to response (output stream) i.e in the format which is readable by excel file.
rs = stmt.executeQuery("select * from ABC");
rs = stmt.executeQuery("select * from DEF");
ODS file is a zip file which contains list of xml files. So when user selects ODS format to download then we need to generate all the xml files based on the data retrieved from database (executing multiple complex queries).
So, during this process i am getting Error 400 which says "proxy did not receive data from origin server. so connection was closed".
i.e. proxy server waits for 2 mins to get response from origin server, if it doesn't get any response then it closes the connection.
The problem is : executing db complex queries (takes 2:50 mins) and based on data received we generate 5 xml file and zipping all the files (takes 10 sec) i.e. totally it takes more than 3 mins. And later we pass the zip file to response outputstream. By the time it execute, we get Error 400.
Can anyone let me know if there is any approach where we can keep our response output stream busy, so that we can avoid Error 400 and download successfully or change the ods file download implementation approach?