Tomcat Streaming

Ah mari kita pindah topik sedikit ke masalah coding. Waktu ini saya diminta membuat halaman untuk mengelola file clinical summary dari 180 ribu patient. Wah bingung juga gimana coding-nya untuk nge-download 1.5GB data itu. Yang jelas data itu harus di-stream, karena kalo di-buffer semuanya terus dimuntahin sekaligus ke user, dijamin si server bakalan tewas dengan sukses. Damn, masak mesti baca – baca wikipedia lagi seh … Dan akhirnya nyangkut kesini deh Content Disposition. Oh ternyata itu toh yang dipakai biar user dikasi window save as itu ya.

        // -- Java codenya
        // --- response: adalah HttpServletResponse object
        // --- filename: nama file
        // --- zippedFile: pointer ke file yang akan di stream

        response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".zip");
        response.setContentType("application/zip");
        response.setContentLength((int) zippedFile.length());
        response.flushBuffer();

Lalu streaming e gimana? Bleh tambah pusing dah. Ternyata pake NIO lebih enak kalo streaming itu hehehe … Ga tau seh apakah pake yang IO biasa bakalan jalan ato ga. Harusnya sih jalan – jalan aja lah ya si basic IO. Intinya seh baca sedikit demi sedikit terus tulisin di buffer e si response hehehe …

        BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(zippedFile));
        ReadableByteChannel input = Channels.newChannel(inputStream);
        WritableByteChannel output = Channels.newChannel(response.getOutputStream());
        ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);</code>

        while (input.read(buffer) != -1) {
            buffer.flip();
            output.write(buffer);
            buffer.clear();
        }

        input.close();
        output.close();

Dan setelah di test, data 1.5GB pun ter-stream dengan sukses tanpa membunuh server tercinta. Berikutnya pusing – pusing bersama Java Cryptography Extension. Yah, mereka pengennya kan data yang bakalan dipindahin ini terenkripsi dengan sukses supaya kalo ada yang nyegat yang bawa data, dia ga bisa dapat isi datanya dengan mudah hehehe …

2 thoughts on “Tomcat Streaming

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s