Langsung ke konten utama

Remote Method Invocation (RMI)

RMI adalah perluasan dari local method invocation yang memungkinkan sebuah objek yang hidup dalam satu proses untuk memohon method objek yang berada di proses lain. (George Coulouris hal 166).
RMI adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.
RMI menyediakan mekanisme dimana server dan client berkomunikasi danmemberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.
Aplikasi objek terdistribusi seringkali melakukan hal berikut:
  • Melokasikan objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming facility) yaitu rmiregistry atau aplikasi dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.
  • Berkomunikasi dengan objek remote: Detail dari komunikasi antara objek remote ditangani oleh RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java standar.
  • Memanggil (load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.
Ilustrasi berikut menggambarkan aplikasi RMI terdistribusi yang menggunakan registry untuk mendapatkan referensi ke objek remote. Server memanggil registry untuk mengasosiasikan (mengikat) suatu nama dengan objek remote. Client mencari objek remote dengan namanya pada registry server dan meng-invoke method dari objek. Ilustrasi ini juga menunjukkan sistem RMI menggunakan Web server untuk memanggil class bytecodes, dari server ke client dan dari client ke server, untuk objek-objek yang diperlukan.
Langkah-Langkah Pembuatan Program dengan RMI
Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.
Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client
Model RMI – Remote Interface

  • Remote interface : Setiap remote obyek memiliki remote interface yang menentukan mana metode dapat dipanggil dari jarak jauh. Sebagai contoh, objek B dan F harus memiliki remote interface. Paragraf berikut ini membahas referensi objek remote, remote interface dan aspek model object terdistribusi. (George Coulouris dkk, hal 172)
Masalah Perancangan untuk RMI
Semantik Pemanggilan RMI : doOperation() dapat diterapkan dalam beberapa cara untuk menyediakan jaminan pengiriman yang berbeda. (George Coulouris dkk, hal 174)
  • Retry Requet Message : apakah permintaan Retransmit pesan sampai baik balasan diterima atau server diasumsikan telah gagal.
  • Duplicate Filtering : ketika retransmisi digunakan, apakah untuk menyaring duplikat permintaan pada server.
  • Retransmission of Result : apakah akan menyimpan history dari pesan hasil untuk mengaktifkan hasil hilang yang akan kembali tanpa mengeksekusi ulang operasi pada server.
Implementasi


Remote Modul Reference Remot referensi modul bertanggung jawab untuk menerjemahkan antara local dan referensi remote objek dan untuk menciptakan referensi remot objek. Untuk mendukung tugasnya ini, referensi modul remote dalam setiap proses memiliki tabel remote objek yang mencatat korespondensi antara objek lokal referensi dalam proses dan referensi remote objek (dimana system-wide) (George Coulouris dkk, hal 176)
Tindakan remote referensi modul adalah sebagai berikut:
  • Ketika remote objek untuk diteruskan sebagai argumen atau hasil untuk pertama kalinya, modul referensi remot modul diminta untuk membuat referensi objek remote, yang menambahkan tabel.
  • Ketika referensi objek remote tiba dalam permintaan atau membalas pesan, remote modul referensi diminta untuk menyesuaikan referensi obyek lokal, yang mungkin mengacu baik pada proxy atau ke objek remot. Dalam hal objek remote referensi tidak ada dalam tabel, menciptakan perangkat lunak RMI proxy baru dan meminta remote referensi modul untuk menambahkannya ke tabel.
Software RMI ini terdiri dari suatu lapisan perangkat lunak antara application level objek dan komunikasi dan reeferensi remot modul. Peran middleware objek adalah sebagai berikut: (George Coulouris dkk, hal 176)
  • Proxy: Peran proxy adalah untuk membuat permohonan metoderemot transparan untuk klien dengan bertingkah seperti objek lokal ke invoker, tetapi selain melaksanakan suatu permintaan ini akan diteruskan sebuah pesan ke objek remote. Itu menyembunyikan rincian remot objek referensi, yang menyusun argumen, menguraikan hasil dan pengiriman dan penerimaan pesan dari klien.
  • Operator/Dispatcher : Sebuah server memiliki satu operator dan kerangka untuk masing-masing mewakili kelas remote objek. Dalam contoh kita, server memiliki operator dan kerangka untuk kelas remot objek B. operator menerima pesan permintaan dari modul komunikasi. Ia menggunakan methodId untuk memilih metode yang tepat dalam kerangka kemudian menyampaikan pesan permintaan. Operator dan proxy menggunakan sama alokasi methodld terhadap metode antarmuka remote.
  • Skeleton: Kelas jauh objek memiliki kerangka, yang mengimplementasikan metode dalam antarmuka remote. Mereka dilaksanakan cukup berbeda dari metode-metode di objek remote. Sebuah metode menguraikan kerangka argumen dalam pesan permintaan dan memanggil metode yang sesuai dalam objek remote.
Contoh implementasi dari RMI di antaranya :
  • Perusahaan programming Avitek yang berlokasi di Amerika Serikat, membuat program sistem accounting untuk intranet yang memungkinkan klien untuk meng-update dan mengubah data dengan mudah. Tujuan dari proyek ini adalah untuk membuat dan mendukung pembuatan dari bukti nyata untuk konsep penggunaan Java yang dikombinasikan dengan database.
  • Perusahaan CEAS Consulting yang menyediakan jasa custom re-engineering dan otomasi proses untuk perusahaan-perusahaan manufakturing dan teknik, telah membuat program sistem terdistribusi untuk klien mereka. Gambaran program mereka adalah seperti berikut :

Cara Kerja RMI :

Dalam model ini, sebuah proses memanggil method dari objek yang terletak pada suatu host/computer remote. Dalam paradigma ini, penyedia layanan mendaftarkan dirinya dengan server direktori pada jaringan. Proses yang menginginkan suatu layanan mengontak server direktori saat runtime, jika layanan tersedia, maka referensi ke layanan akan diberikan. Dengan menggunakan referensi ini, proses dapat berinteraksi dengan layanan tsb. Paradigma ini ekstensi penting dari paradigma RPC. Perbedaannya adalah objek yang memberikan layanan didaftarkan (diregister) ke suatu layanan direktori global, sehingga memungkinkan untuk ditemukan dan diakses oleh aplikasi yang meminta layanan tersebut.
Contoh aplikasi untuk meremote pada teknik RMI (Remote Method Invocation) menggunakan teamviewer untuk meremote computer lain.
Teamviewer adalah suatu program yang cukup sederhana dan sangat mudah digunakan untuk beberapa keperluan terutama melakukan akses PC secara remote melalui internet.
Cara Meremote :


Tampilan utama TeamViewer, jika sudah tampil (Ready to connect (secure connection)) maka sudah siap melakukan koneksi ke PC lain, kemudian masukan ID PC klien jika koneksi berhasil maka akan muncul kotak “Password”, isi password teamviewer PC yang akan anda remote. Jika berhasil maka akan tampil desktop PC yang diremote tersebut. Jika ingin melakukan File Transfer, maka pilih “File Transfer” pada bagian pilihan yang terlihat dibawah kotak ID, kemudian klik “Connect to partner”.

TeamViewer Versi Baru
Jika ingin menggunakan password dan ID yang tetap maka cukup tempatkan kursor mouse pada bagian kotak password, maka akan tampil seperti gambar diatas, pilih “Set user definied password” kemudian masukan password yang anda inginkan. Hasilnya Setelah kita melakukan setting pada teamviewer dan setelah login dan memasukkan password tujuan dengan benar maka kita bisa mengakses computer yang kita remote secara penuh.

Keuntungan RMI:
  • Salahsatu keuntungan RMI adalah kemampuan untuk download zytecodes (code) dari suatu object’s class, jika class tsb tidak terdefinisikan di VM-nya penerima.
  • Type-type dan metode-metode object (class), yang terletak dalam satu VM, dapat dikirim ke VM yang lain, yang mungkin saja remote.
  • Sifat-sifat object yang terkirim ini tidak berubah sama sekali
Kelemahan RMI:
proses pembukaan socket yang kadang-kadang tidak dapat diimplementasikan lewat jaringan internet, tapi hal ini bisa diatasi dengan menggunakan Spring HttpInvoker, sama persis dengan RMI tapi lewat protokol HTTP.

Komentar


  1. permisi gan, saya ada sedikit tulisan mengenai protokol websocket menggunakan bahasa java berikut gan: http://datacomlink.blogspot.co.id/2015/11/script-java-websocket-rfc-6455-server.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..

    BalasHapus

Posting Komentar

Postingan populer dari blog ini

Pro Evolution Soccer 2011-RELOADED [ Mediafire ]

Release Group: RELOADED Release Name: Pro.Evolution.Soccer.2011-RELOADED Release Date: 01-10-2010 Retail Date: 08-10-2010 Filename: rld-pe11 Source: DVD 9 Size: 5.19 GB Genre: Sports Critics: N/A Published by: Konami Developed by: Winning Eleven Productions

Sistem Terdistribusi

sistem terdistribusi adalah sebuah sistem dimana komponen software atau hardware-nya terletak di dalam jaringan komputer dan saling berkomunikasi menggunakan message passing (Message passing adalah sebuah teknik untuk melakukan sinkronisasi dan komunikasi antara proses-proses yang saling berinteraksi). Ada juga yang mengatakan Sistem Terdistribusi adalah sebuah sistem yang terdiri dari beberapa komponen yang terdapat di dalam sebuah jaringan komputer. Komponen-komponen tersebut saling berinteraksi dan berkomunikasi hanya dengan melalui pengiriman pesan. Dengan menjalankan sistem terdistribusi, komputer dapat melakukan :  Koordinasi Aktifitas  Berbagi sumber daya : hardware, software dan data Dengan definisi tersebut diatas maka internet sesungguhnya bukanlah suatu sistem terdistribusi, melainkan infrastruktur dimana sistem terdistribusi dapat di aplikasikan pada jaringan tersebut. Contoh Sistem Terdistribusi 1. Internet: Jaringan komputer dan aplika

Tips untuk menghindari virus dari Flash Drive

Sering banget kan kita mendapat virus dari flashdisk atau removable disk lain ke dalam komputer kita. Virus-virus ini memang menyebalkan, seperti tamu yang ga diundang aja. Tiba-tiba nyelonong masuk ke dalam flashdisk, lalu menginfeksi komputer kita. Logikanya virus akan berjalan jika kita mengeksekusinya. Namun biasanya kita tidak pernah merasa mengeksekusi file yang mengandung virus, lalu kapan virus tersebut kita eksekusi?