Tech I Enjoy Logo
Custom Search
   Log In    OR    Register  


  Home >> Miscellaneous >> stream-download-batch


In this page I am going to show a very specific case study
about the way I could solve a performance bottle-neck in one
of my past academic project using Java Platform.

I had to find out the logic that is using most of the memory
allocated to the server process. This is a very simple project
with a screen to display a search screen with a date range,
start date and end date. User has to select both the start
and end date and search for all the students studied the program
within the date range. Initially number of students studied the
programme for a date range of one month was very less, but 
after using this system for more than couple of years, number
of records grew exponentially and the logic used for fetching
all the records at once by a select statement resulted in 
ten thousands records. And one of the functionality was to provide
user of this system to be able to download all the records in form
of a zipped file (yes a single zipped file containing all the
records). When I performed a thorough analysis on code, found
that the logic for creating a zipped file takes the complete
data in form of a List and then creates a zipped file and then
channels this complete file to the response print writer object.

So this way when complete data is passed to the web server memory, there was potential server crash/hang was observed. What to think? How to solve this particular issue? These are the questions keep coming to my mind. finally after brain storming for a day or two, I decided to do a POC on a particular idea that came to my mind, I was not knowing whether this will work at all or not. This idea is not so rare, you might be thinking this while reading this page. I decided to play around with input output streams with batch of operation strategy. I thought, I shall be creating a buffer output stream on top of the ServletOutputStream object borrowed from response object, then writing certain predefined bytes of data taken from a batch fetch operation at data access layer. So there will be a stream of bytes flown form the data layer to web server layer, then this stream gets converted to a zipped output stream, and then this zipped outputstream will be flushed to the browser with a zipped file as the content-disposition, and content-type appropriately defined in response header. At first it sounds little bit confusing, isn't it!!! It did sound bit confusing, so I started coding a POC to see whether this is practically feasible or not within the platform / technology stack this particular system is running on. I decide to write a servlet that creates a ServletOutputStream and then sets some of those standard response setContentType and setHeaders, then creates a BufferedOutputStream by using the above servlet output stream as a parameter in constructor, then there will be flushing of bytes at regular intervals. For reducing complexities I decided to refrain from creating the zipped output stream for some other POC :). This following file is tested in a very limited runtime environment, it may or may not work, and is not intended to be some sort of advise or suggestions from my side. it is just an example code without any intelligence, so if use it , use it at your own risk please. ExampleZippedDownload.java

package example;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ExampleZippedDownload extends HttpServlet
{
public void doGet(HttpServletRequest request, 
		    HttpServletResponse response) 
		    throws IOException,
			   ServletException {

  try
  {
  response.setContentType("application/vnd.ns-csv");
  response.setHeader("Pragma","public");
  response.setHeader("Cache-Control","public");
  response.setHeader("content-disposition","attachment;filename=records.csv");
  ServletOutputStream sout = response.getOutputStream();

  //buffer capacity is defined to be 10 as of this 
  //example.

  BufferedOutputStream bout = new BufferedOutputStream(sout,10);
  fetchRecords(bout);
  System.out.println("completed downloading....");
  }
  catch (Exception ex)
  {
  ex.printStackTrace();
  //Not thinking about proper exception
  //handling at it is not in scope for
  //this example :)
  }

}
public void fetchRecords(BufferedOutputStream bout) throws Exception {
  byte[] rwRecords = "Student, records".getBytes();
  int i=0;
  while(i<100){
  //this is a place where one can pug in
  //fetching records from database in 
  //batch operation.
  bout.write(rwRecords,0,rwRecords.length);
  bout.flush();
  System.out.println("server processing...");
  Thread.sleep(1000);
  i++;
  }

}
}
If anything missed out , please let me know at techienjoy at yahoo . com
Some of the other Articles you may would like to read :
Android Smartphone OS :
Android Smartphone OS.
Android Example on Expandable List :
Example on using Expandable ListView
on Android Platform.A step by step source code
explained.
Android Intent Broadcast Example :
Example using Intents from Android Platform
using a Broadcast Example
JSF example with source code :
JSF example of Tags and Data Table 
with source code on Java Platform.
Android Intent Broadcast Receiver Example :
Example using Intents from Android Platform
using a Broadcast and Receiver Example
Android Example on Expandable ListView :
Example on using Expandable ListView
on Android Platform.A step by step source code
explained.
Android Grids :
Grids on Android Platform
Android Interview Questions Answer :
List of Interview Questions and answer on Android Technology
Android Database Example :
Example on using Android Database.
Android Data Example :
Example on using Android Data Example.
Android ListView Example :
Example on Android List View
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
Android Performance :
Performance on Android Platform
Android SQL Example :
Example on using Android and SQL Example.
Android User Interface :
User Interface on Android Platform
Android Interview :
Interview on Android Platform
Android Designs :
Designs on Android Platform
Android Answers :
Answers of Questions on Android Platform
Android Process :
Processes on Android Platform
Android Gallery with SurfaceView :
Example showing Android Gallery
with SurfaceView and Spinner
Android Data Access Example :
Example on using Android Data Access.
Android TimePickerDialog Example :
Example on Android TimePickerDialog
explained with a very simple scenario
and appropriate screens captured and shown.
Android Animation Example :
Example using Animation using Android Platform
and source code implementing this example.
Android Service :
Android Service details
Android Menu and MenuItem Example :
Example using Menu and MenuItem using Android Platform 
with code and explained
Android NFC Example :
Example using NFC using Android Platform
and source code implementing this example.
Using Apache Commons Log With Example :
Example using Apache commons log 
with code and explained
Android Smartphone list :
Android Smartphone list.
Android Smartphone apps :
Android Smartphone apps.
JSF example with source code :
JSF example of Tags and Code Walk-through 
with source code on Java Platform.
DOJO Dialog Example :
Example on using DOJO Dialog
explained with a very simple scenario
Google GWT Example :
Example using GWT and some design patterns and various
ways of implementing this example.
JDBC Transaction Isolation Levels :
A short write-up on JDBC Transaction
Isolation showing ways to achieve
various Isolation levels using JDBC.
Android Draw Example :
Example using Draw using Android Platform
and source code implementing this example.
Android Content Provider Example :
Example on using Android Content Provider.
Android Sensors Example :
Example on Android Sensors Listed and
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
Android Debug :
Debug Projects on Android Platform
Web Load Test with example :
Example using Load test functionalities 
with code and explained
Using Different Logger Files :
Example on using different log files 
using Apache Log4j Framework.
Log4j Interview Questions Answer :
List of Interview Questions and answer on Apache Log4j
JSF example with source code :
JSF example with source code on Java Platform.
Android Smartphone Note :
Android Smartphone Note.
Android AlertDialogExample :
Example using AlertDialog from Android Platform
and source code implementing this example.
Android ImageView Example :
Example on using ImageView using 
Android Platform. A very simple to setup
and see it working.
JSF example with source code :
JSF example of Tags and SelectBoxes 
with source code on Java Platform.
Android Example on Downloading AnyFormat :
Example on ways to download any file with
any format using Android Platform.
Android Interview Questions :
Interview Questions on Android Platform
Android Smartphone guide :
Android Smartphone guide.
Android Batch Projects :
Projects Batch on Android Platform
Android Benchmark Projects :
Projects Benchmark on Android Platform
Android Architectures :
Architectures on Android Platform
Android Deploy :
Deploy Projects on Android Platform
Android Clouds :
Clouds Projects on Android Platform
Android DDL Example :
Example on using Android and DDL Example.
Example of using Mule ESB File Transport :
Example of using Mule ESB File Transport with simple
to explain source code.
Android Views Example :
Example using Views using Android Platform
and source code implementing this example.
Android Gallery Example Enhanced :
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
Android ImageButton Example :
Example using ImageButton using Android Platform
and source code implementing this example.
Android Interface :
Interfaces on Android Platform
Android Smartphone reviews :
Android Smartphone reviews.
Using Quartz Scheduler Example :
Example on how to use Quartz Scheduler.
Android ListView Example :
Example on Android ListView and
explained with a very simple scenario 
and article with appropriate screens 
captured and shown.
JSF example with source code :
JSF example of Tags and checkboxes 
with source code on Java Platform.
Android Encryption :
Encryption Features on Android Platform
Android Drawing Example :
Example using Drawing using Android Platform
and source code implementing this example.
Android Customize Example :
Example using Customized Android Platform
and source code implementing this example.
ESB Interview Questions Answer :
ESB Interview Questions Answer
Android Canvas Draw Example :
Example using Canvas for drawing multiple shapes
and using touch event listener as well.
Android Internal memory :
Internal memory on Android Platform
Android Testers :
Testers on Android Platform
Android Developments Projects :
Projects Development on Android Platform
Android Students Projects :
Students Projects on Android Platform
Receiving Intent Notification Example :
Using Intent to send a notification 
on receiving an Intent on Android Platform
Android Orientation Sensor Example :
Example using Orientation Sensor using Android Platform
and source code implementing this example.
Android Cartoon Example :
Example using Cartoon using Android Platform
and source code implementing this example.
Example of using Log4J Part 1 :
Log4j example with source code on Java Platform.
Example of using Mule ESB JMS Transport :
Example of using Mule ESB JMS Transport with simple
to explain source code.
Android Tests :
Tests on Android Platform
Android ListView with Click Event :
Example on using Android ListView with Click Event.
Android Gallery Example :
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
Android Bluetooth Example :
Example using Bluetooth using Android Platform
and source code implementing this example.
Android SQLLite Example :
Example on using Android SQLLite Example.
Example of using Log4J Part 2 :
Log4j example with source code on Java Platform.
Android Security Features :
Security Features on Android Platform
Android Storage Example :
Example on using Android Storage.
Android RelativeLayout Example :
Example using RelativeLayout using Android Platform
and source code implementing this example.
Android ViewFlipper Animation Example :
Example using ViewFlipper for animating multiple images
in a sequence of flow by appropriate flippering.
Android Examples :
List of ANDROid examples
with source code and output
screens captured and shown.
Example using Tag Library :
Example on how to code and use
Custom Tag Library on Java Platform.
Android Smartphone features :
Android Smartphone features.
Wizard Framework using Java Platform :
Example using Custom Wizard Framework 
with code and explained
Android DatePickerDialog Example :
Example on Android DatePickerDialog
explained with a very simple scenario
and appropriate screens captured and shown.
Android View LayoutParams Example :
Example using View LayoutParams using Android Platform
and source code implementing this example.
Android TextView Link Example :
Example using a hyperlinked Text using Android TextView
Android ListView Example :
Example on Android ListView 
explained with a very simple scenario
whereby showing folder and files with
structure and appropriate screens 
captured and shown.
Android Tab View Example :
Example on Android Tab View
explained with a very simple scenario
and appropriate screens captured and shown.
Android Canvas Example :
Example using Canvas using Android Platform
and source code implementing this example.
JSF example on validation :
JSF Validation with example with source code 
on Java Platform.
Android Spinner Example :
Example using Spinner using Android Platform
and source code implementing this example.
Android GridView Example :
Example using GridView Widget using Android Platform
and source code implementing this example.
Android Customized ImageButton Example :
Example using ImageButton and customized to show
a different view altogether and source code implementing
this example.
Android DevelopersProjects :
Students Projects Developers on Android Platform
Android Smartphone comparison :
Android Smartphone comparison.
Android Edittext Example :
Example using EditText using Android Platform
and source code implementing this example.
Android Image Gradient Merge :
Example using Images and Gradient Shape using
Android Platform.
Android Intent Example :
Example using Intent from Android Platform
and source code implementing this example.
Android Shared Preferences Example :
Example on using Android Shared Preferences.
Android Questions :
Questions on Android Platform
Android WebView Example :
Example using WebView using Android Platform
and source code implementing this example.
Android Span Undelined Text Example :
Example using span for creating 
a hyperlinked Text using Android TextView
Android Robots Example :
Example using Borots using Android Platform
and source code implementing this example.
Android Text to Speech Example :
Android Example on using Text
2 Speech conversion explained with
source code Explained.
Android Layout Example :
Android Example on using Layout
with source code Explained.
Android Tech Example :
Tech related discussion on Android Technology
DOJO Tree Widget Example :
Example on using DOJO Tree Widget
explained with a very simple scenario
List of Examples on Various Technologies :
List of Examples on Various Technologies and Frameworks.
Android Custom View Example :
Example using Custom View using Android Platform
and source code implementing this example.
JSF example on Resource Bundle :
JSF example of Resource Bundle with source code 
on Java Platform.
Android Preferences Example :
Example on using Android Preferences.
Android SQLite Example :
Example on using Android SQLite Example.
Android Smartphone online :
Android Smartphone online.
Android UIThread Animation Example :
Example using UI Thread for animating multiple images
in a sequence of flow.
Android ViewGroup Example :
Example using ViewGroup using Android Platform
and source code implementing this example.


References :
Tags: TabHost and TabActivity Example on Android Platform
Tags: ListView Example on Android Platform
Tags: android sensors list
Tags: android listview example
Tags: android imageview example
Tags: Android example download any file sourcecode
Tags: android expandable list dynamically created example
Tags: android expandable list example
Tags: Android Gallery surfaceviews spinner
Tags: Android example download any file sourcecode
Tags: Android Layout Example
Tags: Android Text To Speech Example

Tags: DOJO Example Dialog
Tags: DOJO Example Tree Widget
Tags: different logger file log4j
Tags: JDBC Transaction isolation
Tags: event handling java code
Tags: example quartz scheduler
Tags: example tag library web application
Tags: Flex
Tags: index
Tags: inmemory image creation java awt
Tags: JSF Example Main
Tags: JSF Example Tags CheckBoxes
Tags: JSF Example Tags dataTable
Tags: JSF Example Tags SelectBoxes
Tags: JSF Example Tags Walkthrough
Tags: JSF Example Validation
Tags: JSF Resource Bundle
Tags: log4j example 1
Tags: log4j example
Tags: Miscellaneous
Tags: Mule ESB File Transport
Tags: Mule ESB JMS Transport
Tags: stream download batch
Tags: sychronized block wait notify
Tags: thread wait notify example
Tags: using apache commons log
Tags: web load test
Tags: Wizard Framework Idea Java


For any of the content, if you would like to bring it to notice for removal from this web site, please write to this web site administrator @ EMAIL-ID,
with appropriate concern and supporting proof(s). After thorough review and if found genuine concern, we would take appropriate action and 
remove disputed content from this web site within 24 hours starting from the time it has brought to our notice.


The content provided in this page is not warranted and/or guaranteed by techienjoy.com. techienjoy.com is not liable for any negative 
consequences that may result/arise from implementing directly/indirectly any information covered in these pages/articles/tutorials.

All contents of this site is/are written and provided on an "AS IS" basis, without WARRANTIES or conditions of any kind, either express
or implied, including, without limitation, merchantability, or fitness for a particular purpose. You are solely responsible for determining 
the appropriateness of using or refering this and assume any risks associated with this.

This web site is optimized for learning and training. Examples might be simplefied to improve reading and basic understanding only. 
This web site content are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. 
In spite of all precautions taken to avoid any typo in these pages, there might be some issues like grammatical mistakes and typos 
being observed in these pages, techienjoy.com extends sincerest apologies to all our visitors for the same.

While using this web site, you agree to have read and accepted our terms of use and privacy policy.


Android Examples || Android Training

© Copyright 2010-2012, TECHIENJOY, All Rights Reserved.      Privacy Policy     Disclaimer & Terms & Conditions