170 likes | 515 Views
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 .
E N D
Remote Method Invocation (RMI)Materi 3 PemrogramanJaringan Dosen: EkoPrasetyo TeknikInformatika UMG 2012
KonsepRMI • Semua method program yang pernahkitabuat, dipanggilsecaralokal. • Dalamlinkunganterdistribuasi, seringkalidibutuhkanuntukdapatmemanggil method padaobjek remote (mis, objek yang adadisistem yang lain). • RMI (Remote Method Invocation)menfasilitasikebutuhanini. • DalamRMI, detail jaringandibutuhkanolehalir program dan socket tidaknampak, karenaobyekberlokasidisistem lain danhampirtransparantehadap programmer Java. • Satu kali refrensikeobjek remote didapatkan, method objektersebutdipanggildengancara yang samasepertisecaralokal. • Dibaliklayar, RMIakanmenggunakanaliran byte untukmentransferpemanggilan data dan method, tapisemuadihandlesecaraotomatisolehinfrastrukturRMI.
KonsepRMI • Program server mempunyaikontrolobjek remote yang terdaftardalam interface bernama service, yang dikerjakannyamembuat interface tersebutbisadiaksesoleh program klien. • Interface berisitanda method objekdimana server membuatnyatersediasecarapublik. • Program klienbisamenggunakannama service yang samauntukmendapatkanreferensi interface dalambentuk yang disebutstub. • Stub secaraefektifadalahpendampinguntukobjek remote. Di sistem remote, adapendamping lain yang disebutskeleton. • Ketika program klienmemanggil method objek remote, makaakantampakkeklienbahwa method sepertidipanggilsecaralangsung. • Yang terjadisebenarnya, method dipanggildalam stub, stub menforwardpanggilandan parameter ke skeletondimesin remote.
Detail Implementasi • Package yang digunakanuntukimplementasiRMIaplikasi client-server adalah: java.rmi, java.rmi.serverdanjava.rmi.registry, hanya 2 yang pertama yang digunakansecaraeksplisit. • Langkah-langkah: • Membuat interface • Mendefinisikankelas yang mengimplementasi interface • Membuatproses server • Membuatprosesklien • Contoh: • Aplikasimenampilkanselamatkesemuaklien yang menggunakan interface yang tepat yang terdaftardengannama service untukmemanggilimplementasi method yang terasosiasidi server. • Dalampenerapannyata, adabanyak method dan method tersebutdimilikbeberapakelas.
Contoh • 1. Membuat interface • 2. Mendefinisikankelas yang mengimplementasikan interface. • Mengimplementasikanpaketjava.rmi danjava.rmi.server. • Harusmembuatkankonstrukt • 3. Membuatproses server • Server membuatobjekdariimplementasikelastersebut, kemudianmeregisterkannyadengan service naming yang disebut registry. Dilakukanmenggunakan method rebind darikelas Naming (daripaket java.rmi), menggunakan 2 argumen: • String namaobjeksebagai URL denganprotokolRMI • referensikeobjek remote
Contoh • 4. Membuatprosesklien • Klienmendapatkanreferensikeobjek remote dari registry. Dilakukanmenggunakanteknik lookup kelas Naming, dimasukkansebagaiargumenke method tersebut URL yang samadimana server mem-binding referensiobjek. • Karena lookup mengembalikanreferensi Remote, referensiiniharusdi typecast kereferensi Hello (bukanreferensiHelloImpl). • Satu kali referensi hello didapatkan, makadiadapatdigunakanuntukmemanggilmetoh yang disediakan interface.
Kompilasidaneksekusi • Mengompilasisemua file • javac Hello.java • javac HelloImpl.java • javac HelloServer.java • javac HelloClient.java • Mengompilasikelasimplementasidengan compiler rmic • rmic -v1.2 HelloImpl • Dihasilkan file dengannamaHelloImpl_stub.class. • Buka window Cprompt, Menjalankan registry RMI • rmiregistry • Buka window Cpromptbaru, jalankan server • Panggil Java interpreter: java HelloServer • Buka window Cpromptbaru, jalankanklien • Panggil Java interpreter: java HelloClient
Contohaplikasi • Aplikasiakanmembuatobjekakun bank tersediauntukmenghubungkanklien, yang dapatmemanipulasiobjek remote denganmemanggil method. • 1. Membuat interface • 2. Mendefinisikankelas yang mengimplementasikan interface • Implementasi data dan method yang diasosiasikandenganakunmasing-masing, kelastersebutmendefinisikankonstruktoruntukobjekimplementasi.
Contohaplikasi • 3. Membuatprosesdiserver • Kelas server membuat array objekimplementasidanmelakukan bind terhadapmasing-masingobjekke registry. Namasetiapobjekdibentukdarigabungannomorakundengankata 'Account' (Misal, 'Account111111')
Contohaplikasi • 4. Membuatprosesdiklien • Klienmenggunakan method lookup untukmendapatkanreferensikemasing-masingakun (yang ditanganiolehobjekimplementasi)