Remote Method Invocation (RMI) Materi 3 Pemrograman Jaringan Dosen: Eko Prasetyo Teknik Informatika UMG 2012
Konsep RMI Semua method program yang pernah kita buat, dipanggil secara lokal. Dalam linkungan terdistribuasi, seringkali dibutuhkan untuk dapat memanggil method pada objek remote (mis, objek yang ada di sistem yang lain). RMI (Remote Method Invocation) menfasilitasi kebutuhan ini. Dalam RMI, detail jaringan dibutuhkan oleh alir program dan socket tidak nampak, karena obyek berlokasi disistem lain dan hampir transparan tehadap programmer Java. Satu kali refrensi ke objek remote didapatkan, method objek tersebut dipanggil dengan cara yang sama seperti secara lokal. Dibalik layar, RMI akan menggunakan aliran byte untuk mentransfer pemanggilan data dan method, tapi semua dihandle secara otomatis oleh infrastruktur RMI.
Konsep RMI Program server mempunyai kontrol objek remote yang terdaftar dalam interface bernama service, yang dikerjakannya membuat interface tersebut bisa diakses oleh program klien. Interface berisi tanda method objek dimana server membuatnya tersedia secara publik. Program klien bisa menggunakan nama service yang sama untuk mendapatkan referensi interface dalam bentuk yang disebut stub. Stub secara efektif adalah pendamping untuk objek remote. Di sistem remote, ada pendamping lain yang disebut skeleton. Ketika program klien memanggil method objek remote, maka akan tampak ke klien bahwa method seperti dipanggil secara langsung. Yang terjadi sebenarnya, method dipanggil dalam stub, stub menforward panggilan dan parameter ke skeleton di mesin remote.
Konsep RMI
Detail Implementasi Contoh: Package yang digunakan untuk implementasi RMI aplikasi client- server adalah: java.rmi, java.rmi.server dan java.rmi.registry, hanya 2 yang pertama yang digunakan secara eksplisit. Langkah-langkah: Membuat interface Mendefinisikan kelas yang mengimplementasi interface Membuat proses server Membuat proses klien Contoh: Aplikasi menampilkan selamat ke semua klien yang menggunakan interface yang tepat yang terdaftar dengan nama service untuk memanggil implementasi method yang terasosiasi di server. Dalam penerapan nyata, ada banyak method dan method tersebut dimilik beberapa kelas.
Contoh 1. Membuat interface 3. Membuat proses server 2. Mendefinisikan kelas yang mengimplementasikan interface. Mengimplementasikan paket java.rmi dan java.rmi.server. Harus membuatkan konstrukt 3. Membuat proses server Server membuat objek dari implementasi kelas tersebut, kemudian meregisterkannya dengan service naming yang disebut registry. Dilakukan menggunakan method rebind dari kelas Naming (dari paket java.rmi), menggunakan 2 argumen: String nama objek sebagai URL dengan protokol RMI referensi ke objek remote
Contoh 4. Membuat proses klien Klien mendapatkan referensi ke objek remote dari registry. Dilakukan menggunakan teknik lookup kelas Naming, dimasukkan sebagai argumen ke method tersebut URL yang sama dimana server mem-binding referensi objek. Karena lookup mengembalikan referensi Remote, referensi ini harus di typecast ke referensi Hello (bukan referensi HelloImpl). Satu kali referensi hello didapatkan, maka dia dapat digunakan untuk memanggil metoh yang disediakan interface.
Kompilasi dan eksekusi Mengompilasi semua file javac Hello.java javac HelloImpl.java javac HelloServer.java javac HelloClient.java Mengompilasi kelas implementasi dengan compiler rmic rmic -v1.2 HelloImpl Dihasilkan file dengan nama HelloImpl_stub.class. Buka window Cprompt, Menjalankan registry RMI rmiregistry Buka window Cprompt baru, jalankan server Panggil Java interpreter: java HelloServer Buka window Cprompt baru, jalankan klien Panggil Java interpreter: java HelloClient
Contoh aplikasi Aplikasi akan membuat objek akun bank tersedia untuk menghubungkan klien, yang dapat memanipulasi objek remote dengan memanggil method. 1. Membuat interface 2. Mendefinisikan kelas yang mengimplementasikan interface Implementasi data dan method yang diasosiasikan dengan akun masing- masing, kelas tersebut mendefinisikan konstruktor untuk objek implementasi.
Contoh aplikasi 3. Membuat proses di server Kelas server membuat array objek implementasi dan melakukan bind terhadap masing-masing objek ke registry. Nama setiap objek dibentuk dari gabungan nomor akun dengan kata 'Account' (Misal, 'Account111111')
Contoh aplikasi 4. Membuat proses di klien Klien menggunakan method lookup untuk mendapatkan referensi ke masing-masing akun (yang ditangani oleh objek implementasi)
Any Question ?