Transcript Document

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.






2
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.

3
Konsep RMI
4
Detail Implementasi
Package yang digunakan untuk implementasi RMI aplikasi clientserver adalah: java.rmi, java.rmi.server dan java.rmi.registry,
hanya 2 yang pertama yang digunakan secara eksplisit.
Langkah-langkah:


1.
2.
3.
4.
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.



5
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.



6
Mengimplementasikan paket java.rmi
dan java.rmi.server.
Harus membuatkan konstrukt
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




7
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


8
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


9
Implementasi data dan method yang
diasosiasikan dengan akun masingmasing, kelas tersebut mendefinisikan
konstruktor untuk objek implementasi.
Contoh aplikasi

3. Membuat proses di
server

10
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

11
Klien menggunakan
method lookup untuk
mendapatkan referensi ke
masing-masing akun (yang
ditangani oleh objek
implementasi)
Any Question ?
12