Wednesday, July 28, 2010

Konsep: Application server

Siapapun yang belajar Java pasti tahu sebuah program Java dimulai dari main, misalnya seperti ini:


Menurut penjelasan di buku, setelah source code (.java) di-compile menjadi bytecode (.class), kita tinggal menjalankannya dari command prompt dengan perintah:

java Kelasku

Lalu apa gunanya application server seperti Apache Tomcat? Bukannya kita tinggal membuka port 80 dari dalam main? OK, anggaplah kita memulai semua dari nol alias "semuanya kita yang mengurus", maka program yang kita buat harus:

  1. Membuka server socket yang mendengarkan port 80 (HTTP).
  2. Ketika seseorang membuka http://alamat_kita, program kita harus tahu cara membaca request tersebut. Dengan kata lain, program kita harus mengimplementasikan protokol HTTP.
  3. Memproses request tersebut sesuai logika bisnis yang kita miliki, misalnya mengambil data dari database atau menghitung bonus penjualan.
  4. Mengembalikan respon, misalnya menghasilkan halaman berikutnya.

Perlu diingat, program tersebut harus bisa "salome"—satu lubang (port) ramai-ramai, karena "http://alamat/admin" dan "http://alamat/" mungkin ditangani oleh program yang berbeda (namun keduanya berada di port 80). Program yang kita buat juga harus mendukung multi-theading agar bisa diakses serempak oleh banyak orang. Terlihat ribet kan?

Itulah gunanya application server. Kita tidak perlu repot membuat semua dari awal. Yang perlu kita lakukan adalah membuat program sesuai "perjanjian", dalam hal ini kita membuat Servlet. Urutannya menjadi:

  1. Ada request masuk.
  2. Dilihat apakah ada program ("webapp") yang di-setting untuk menangani request ini.
  3. Kalau tidak ada, tampilkan pesan kesalahan.
  4. Kalau ada, panggil fungsi doGet/doPost dari program tersebut (yang merupakan sebuah Servlet), sambil memberikan data-data dari request.
  5. Kembalikan hasil pemrosesan poin 4 ke sumber yang meminta request.

Pemrograman Web menggunakan teknologi Java selalu seperti ini. JSP, JSF, Struts, Spring MVC dan berbagai framework lainnya adalah "teknologi tambahan" yang berjalan di atas Servlet. Untuk alasan mengapa menggunakan framework dapat dilihat di blog sebelumnya.

Selain fungsi dasar di atas (melayani HTTP request), biasanya application server juga ada plus-plusnya. Umumnya program kita membutuhkan koneksi ke DB, sehingga application server menyediakan fungsi untuk itu. Application server juga mungkin menyediakan fungsi untuk mengirim email. Application server yang menyediakan fungsi-fungsi itu biasanya disebut "application server", sedangkan application server yang basic biasanya disebut "servlet container".

No comments:

Post a Comment