Selasa, 18 Oktober 2011

Remote Methode Invocation


1.1.  Pengertian RMI
RMI (Remote Methode Invocation) adalah salah satu bagian dari J2SE yang digunakan untuk membangun aplikasi terdistribusi menggunakan bahasa java.
RMI dapat juga disebut sebagai kumpulan kelas dalam java yang digunakan untuk menangani pemanggilan (invocation) methode/secara jarak jauh (remote) dalam suatu jaringan atau internet.

Gagasan tentang RMI muncul karena terkadang dibutuhkan mekanisme untuk memisahkan atau mendistribusikan aplikasi agar dapat diakses di jaringan. Skenario pada RMI adalah sisi server selalu standby dan di sisi client, diatur dengan periode waktu tertentu.

1.2.  Arsitektur RMI
 
Secara garis besar, RMI terdiri atas 2 bagian, yakni RMI Server, RMI Client dan didukung oleh RMI Registry. Prinsipnya dijelaskan berikut :
1. RMI server biasanya akan membuat beberapa remote obyek dan referensinya yang dapat diakses oleh RMI client menggunakan suatu URL dan menunggu RMI client meminta ke server.
2.  RMI Client akan membuat koneksi ke server dan meminta panggilan ke beberapa remote obyek berdasarkan referensi yang diterimanya. RMI client ini akan menggunakan remote obyek sebagai lokal obyek.
3. Peran RMI registry adalah mendaftarkan setiap remote obyek yang dibuat oleh RMI server, sehingga saat client membutuhkannya, dapat dengan mudah mengakses RMI  registry dengan port default 1099.

1.3.   RMI Sisi Server
Pada sisi server, ada 3 layer utama yang membangun RMI, yakni Skeleton layer, Remote Reference Layer dan transport layer, serta satu Remote Object. Penjelasannya berikut :
1. Remote Object, yang dibuat oleh RMI server, yang kemudian akan didaftarkan pada registry. Remote Object bertanggung jawab pada berbagai macam tugas, meliputi inisiasi suatu remote call, marshalling (mengubah obyek menjadi bentuk yang portable bagi jaringan), memberitahukan lapisan remote reference bahwa suatu call harus dipanggil (invoked), exception, dan memberitahukan pada lapisan remote reference bahwa suatu panggilan telah selesai.
2.  Skeleton Layer, bertindak sebagai proxy pada sisi server. Tanggung jawab dari lapisan ini adalah marshalling (exception pada stub client) dan mengirimkan panggilan method pada server object sesungguhnya. Juga bertindak sebagai interface antara lapis aplikasi dan JVM (Java Virtual Machine). Skeleton terbentuk secara otomatis dengan menggunakan compiler yang ada di RMI, yaitu rmic compiler.
3.    Remote Reference Layer adalah lapisan yang bertanggung jawab dalam melaksanakan satu protokol remote reference khusus. Tugasnya adalah menemukan lokasi remote obyek, membuat panggilan point to point dan rekoneksi secara otomatis, mengaktifkan proses server baru jika belum diaktifkan sebelumnya dan memelihara replikasi jika dibutuhkan.
4.    Transport layer, merupakan lapis TCP/IP-based, yang bertanggung jawab mengadakan hubungan antara server dan client. Fungsi lainnya adalah memelihara table yang berisi obyek obyek pada JVM, membuat dan memelihara dua koneksi antara 2 JVM menggunakan TCP/IP, menerima dan merespon setiap pemanggilan dari atau ke server. Lapisan ini hanya tersedia di level virtual machine.



1.4.   RMI Sisi Client
Pada sisi Client, ada 3 layer utama yang membangun RMI, yakni Stub layer, Remote Reference Layer dan transport layer. Penjelasannya berikut :
1. Stub Layer, bertindak sebagai proxy pada sisi client. Selamat remote invocation berlangsung, stub bertanggung jawab untuk meminta lokasi remote server object pada remote reference layer, marshalling (merangkai argumen pada output stream, memberitahu remote reference bahwa semua data parameter telah terkirim, unmarshalling (rangkaian nilai yang diterima dari remote object) dan memberitahu reference layer bahwa pemanggilan telah lengkap.
2. Remote Reference Layer pada sisi client fungsinya hampir sama dengan sisi server, yakni lapisan yang bertanggung jawab dalam melaksanakan satu protokol remote reference khusus. Tugasnya adalah menemukan lokasi remote obyek, membuat panggilan point to point dan rekoneksi secara otomatis dan memelihara replikasi jika dibutuhkan. Hanya saja pada client, tidak perlu mengaktifkan proses server.
3. Transport layer, merupakan lapis TCP/IP-based, sama seperti sisi server, yang bertanggung jawab mengadakan hubungan antara server dan client. Fungsi lainnya adalah memelihara table yang berisi obyek obyek pada JVM, membuat dan memelihara dua koneksi antara 2 JVM menggunakan TCP/IP, menerima dan merespon setiap pemanggilan dari atau ke  client. Lapisan ini hanya tersedia di level virtual machine.

1.5.   RMI Flow
Berikut akan dijelaskan flow pada RMI :
1. Server akan membuat remote object.
2. Server akan mendaftarkan remote object tersebut pada registry agar mudah saat dipanggil di sisi client.
3. Registry akan membuat layanan listen yang menunggu permintaan dari client
4. Client mengakses registry menggunakan static class naming, yang menyediakan lookup untuk melakukan query ke registry.
5. Metode lookup ini menerima URL yang menyatakan nama server dan nama service yang diminta, kemudian mengembalikan remote reference obyek yang diminta.
6. Selanjutnya client memanggil (invoked) Stub method.
7. Stub kemudian berkomunikasi dengan skeleton Skeleton memanggil (invoked) remote object method.

1.6.   Langkah Langkah Pembuatan Program Dengan RMI
Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah, yakni :
1.    Mendefenisikan remote interface
2.    Implementasi remote interface dan server
3.    Pengembangan client atau applet yang menggunakan remote interface
4.    Mengkompilasi source files dan membuat stub dan skeletons
5.    Memulai RMI registry
6.    Menjalankan server dan client.
NB : Dari berbagai sumber ^_^

1 komentar: