Aturan Praktikum: - Keterlambatan maksimal 10 menit - Hasil praktikum, selesai atau tidak selesai ditanggung mahasiswa - Nilai praktikum adalah nilai perorangan, sebagai tambahan nilai test atau quiz jika nilai test atau quiz kurang mencukupi - Mahasiswa login ke komputer - Persiapan dan penjelasan praktikum 10 menit - Praktikum dilakukan selama 70 menit terdiri dari praktikum sesuai modul - Hasil praktikum di-zip dan dikumpulkan - Sisa waktu 20 menit digunakan untuk tes kecil hasil praktikum, saat tes tampilan komputer adalah background desktop dan mahasiswa tidak diperkenankan menggunakan komputer dan melihat modul praktikum - Mahasiswa logout dari komputer - Praktikum selesai
A. REMOTE METHOD INVOCATION (RMI) (Minggu 1 Praktikum II)
1. Sekilas RMI
RMI (Remote Method Application) pada J ava adalah mekanisme yang mengijinkan sebuah objek untuk mengakses metode objek lainnya yang berada pada alamat lain pada mesin yang sama ataupun mesin yang berbeda. Arsitektur RMI adalah seperti pada gambar berikut:
Terdapat tiga proses yang ada pada mekanisme RMI, yaitu: 1. Client berupa proses yang melakukan invokasi metode ke sebuah objek remote. www.gangsir.com Rosa Ariani Sukamto
2. Server berupa proses yang memiliki objek remote. Objek remote adalah objek biasa yang berada pada server. 3. Object Registry adalah penamaan objek pada server. Pada J ava, sebuah objek remote adalah instans dari suatu kelas yang mengimplementasikan antarmuka remote. 2. Praktikum a. Persiapan Membuat direktori kerja dengan nama SI319-P2-Kelas-NIM misalnya SI319-P2-A-23507024 Di dalam direktori di atas, buat direktori RMI untuk menyimpan file- file yang akan dibuat.
b. Membuat Kelas Remote dan antarmuka (interfaces) Kelas remote merupakan kelas yang digunakan sebagai antarmuka objek remote agar dapat diakses oleh klien. Kelas remote memiliki dua buah bagian yaitu sebuah antarmuka dan kelas remote itu sendiri. Sebuah antarmuka remote harus memiliki properti berikut: 1. antarmuka (interface) harus merupakan kelas public 2. antarmuka (interface) harus merupakan turunan dari j ava. r mi . Remot e 3. setiap metode pada antarmuka (imterface) harus melemparkan j ava. r mi . Remot eExcept i on atau eksepsi lainnya. Kelas remote harus memiliki properti sebagai berikut: 1. harus merupakan implementasi dari antarmuka remote 2. harus merupakan turunan dari kelas java.rmi.server.UnicastRemoteObject. 3. kelas remote dapat memiliki metode yang tidak terdapat pada antarmuka remote tapi metode ini tidak dapat dipanggil oleh klien. Nama file: HelloInterface.java
i mpor t j ava. r mi . *; / ** * ant ar muka r emot e */ publ i c i nt er f ace Hel l oI nt er f ace ext ends Remot e { / ** * met ode yang dapat di i nvokasi kl i en */ publ i c St r i ng say( ) t hr ows Remot eExcept i on; }
www.gangsir.com Rosa Ariani Sukamto
Nama file: Hello.java
i mpor t j ava. r mi . *; i mpor t j ava. r mi . ser ver . *; / ** * kel as r emot e */ publ i c cl ass Hel l o ext ends Uni cast Remot eObj ect i mpl ement s Hel l oI nt er f ace { pr i vat e St r i ng message; / ** * konst r ukt or */ publ i c Hel l o ( St r i ng msg) t hr ows Remot eExcept i on { message = msg; } / ** * I mpl ement asi met ode say( ) */ publ i c St r i ng say( ) t hr ows Remot eExcept i on { r et ur n message; } }
Antarmuka dan kelas remote diatas harus dikompilasi dengan cara sebagai berikut: 1. Buka command prompt, masuk ke direktori RMI 2. Coba ketik perintah: javac J ika muncul pesan:
' j avac' i s not r ecogni zed as an i nt er nal or ext er nal command, oper abl e pr ogr amor bat ch f i l e.
Maka ketik perintah:
path=<tempat direktori instalasi java>\bin;%path%
contoh:
path=C:\Program Files\J ava\jdk1.5.0_05\bin;%path% 3. Ketik perintah: javac *.java 4. Ketik perintah: rmic Hello (perintah ini akan berjalan dengan baik jika rmic menemukan file HelloInterface.class dan Hello.class, oleh karena itu sebelumnya perlu diset path- nya dengan perintah sebelumnya) 5. Ketik perintah: rmiregistry &
www.gangsir.com Rosa Ariani Sukamto
c. Membuat Client
Klien yang akan dibuat merupakan program java biasa. Sebuah klien pada RMI membutuhkan kelas remote untuk mengetahui metode apa saja yang boleh diakses oleh klien.
Object Registry merupakan sebuah penamaan untuk memanggil metode di server oleh klien. Penamaan object registry harus terdiri dari informasi-informasi berikut:
1. alamat internet mesin yang menjalankan object registry dimana metode remote registrasi, jika klien dan object registry berjalan pada mesin yang sama maka nama ini dapat diabaikan 2. port dimana object registry menunggu klien (listening), jika menggunakan port standar 1099, maka nilai port bisa tidak ditulis 3. nama lokal dari objek remote yang ada dalam object registry
Nama file: Client.java
i mpor t j ava. r mi . *;
cl ass Hel l oCl i ent { / ** * kel as kl i en */ publ i c st at i c voi d mai n ( St r i ng[ ] ar gv) { t r y { / / memanggi l met ode dengan mel i hat obj ect r egi st r y Hel l oI nt er f ace hel l o = ( Hel l oI nt er f ace) Nami ng. l ookup ( " / / l ocal host / Hel l o" ) ; Syst em. out . pr i nt l n ( hel l o. say( ) ) ; } cat ch ( Except i on e) { Syst em. out . pr i nt l n ( " Hel l oCl i ent except i on: " + e) ; } } }
Nami ng. l ookup pada kode di atas merupakan metode untuk mengakses metode secara remote dengan alamat objek yang ada pada object registry dan port standar. Hasil dari Naming.lookup harus diubah tipenya menjadi tipe dari antarmuka remote.
d. Membuat Server Server juga hanya berupa program J ava. Objek remote harus telah terdapat pada objek registry karena server akan mengikat objek remote, dengan menggunakan Nami ng. r ebi nd ( obj ect Name, obj ect ) ; dimana object adalah objek yang telah diregister dan objectName adalah nama objek remote yang telah diregister.
www.gangsir.com Rosa Ariani Sukamto
Nama file: HelloServer.java
i mpor t j ava. r mi . *;
cl ass Hel l oSer ver { / ** * ser ver r emot e */ publ i c st at i c voi d mai n ( St r i ng[ ] ar gv) { t r y { Nami ng. r ebi nd ( " Hel l o" , new Hel l o ( " Hel l o, wor l d! " ) ) ; Syst em. out . pr i nt l n ( " Hel l o Ser ver i s r eady. " ) ; } cat ch ( Except i on e) { Syst em. out . pr i nt l n ( " Hel l o Ser ver f ai l ed: " + e) ; } } }
e. Menjalankan Aplikasi 1. Buka command prompt dan ketik perintah: rmiregistry & 2. Buka command prompt kedua, masuk ke direktori RMI 3. Kompilasi server dengan mengetik perintah: javac HelloServer.java 4. Kemudian jalankan server dengan mengetik perintah: java HelloServer & 5. Buka command prompt ketiga, masuk ke direktori RMI 6. kompilasi klien dengan mengetik perintah: javac HelloClient.java 7. jalankan klien dengan mengetik perintah: java HelloClient 8. Ketik ctrl+c untuk menghentikan aplikasi
B. RMI-IIOP (Internet InterORB Protocol) RMI-IIOP adalah antarmuka RMI yang menggunakan IIOP(Internet Inter-ORB Protocol) sebagai koneksi komunikasi. RMI-IIOP menyediakan antarmuka operasi dengan objek CORBA(Common Object Request Broker Architecture) (akan dibahas pada minggu ke 4). Dengan menggunakan IIOP, RMI dapat diakses oleh klien dari CORBA yang dapat ditulis dengan menggunakan berbagai macam bahasa pemrograman. 1. Praktikum a. Persiapan Di dalam direktori SI319-P2-Kelas-NIM, buat direktori RMIIIOP untuk menyimpan file-file yang akan dibuat.
b. Membuat antarmuka RMI
www.gangsir.com Rosa Ariani Sukamto
Nama file: HelloInterface.java
i mpor t j ava. r mi . Remot e;
publ i c i nt er f ace Hel l oI nt er f ace ext ends j ava. r mi . Remot e { publ i c voi d sayHel l o( St r i ng f r om) t hr ows j ava. r mi . Remot eExcept i on; }
c. Membuat kelas implementasi objek remote (Servant)
Kelas implementasi objek remote merupakan kelas yang dapat membuat objek remote dengan menggunakan IIOP sebagai protokol komunikasi
Nama file: HelloImpl.java
i mpor t j avax. r mi . Por t abl eRemot eObj ect ;
publ i c cl ass Hel l oI mpl ext ends Por t abl eRemot eObj ect i mpl ement s Hel l oI nt er f ace { publ i c Hel l oI mpl ( ) t hr ows j ava. r mi . Remot eExcept i on { super ( ) ; / / i nvoke r mi l i nki ng dan r emot e obj ect i ni t i al i zat i on }
publ i c voi d sayHel l o( St r i ng f r om) t hr ows j ava. r mi . Remot eExcept i on { Syst em. out . pr i nt l n( " Hel l o f r om" + f r om+ " ! ! " ) ; Syst em. out . f l ush( ) ; } }
d. Membuat Server
Kelas server merupakan kelas yang memiliki metode main untuk membuat instans dari implementasi objek remote dan mengikat instans itu dengan penamaan dalam Naming Services.
Nama file: HelloServer.java
i mpor t j avax. nami ng. I ni t i al Cont ext ; i mpor t j avax. nami ng. Cont ext ;
publ i c cl ass Hel l oSer ver { publ i c st at i c voi d mai n( St r i ng[ ] ar gs) { t r y { / / 1: mengi nst ansi asi obj ek i mpl ement asi obj ek r emot e Hel l oI mpl hel l oRef = new Hel l oI mpl ( ) ;
/ / 2: mempubl i kasi kan r ef er ensi Nami ng Ser vi ces www.gangsir.com Rosa Ariani Sukamto
/ / dengan J NDI API Cont ext i ni t i al Nami ngCont ext = new I ni t i al Cont ext ( ) ; i ni t i al Nami ngCont ext . r ebi nd( " Hel l oSer vi ce" , hel l oRef ) ;
Syst em. out . pr i nt l n( " Hel l o Ser ver : Ready. . . " ) ;
} cat ch ( Except i on e) { Syst em. out . pr i nt l n( " Tr oubl e: " + e) ; e. pr i nt St ackTr ace( ) ; } } }
e. Membuat Client
Aplikasi klien memanggil metode sayHello().
Nama file: HelloClient.java
i mpor t j ava. r mi . Remot eExcept i on; i mpor t j ava. net . Mal f or medURLExcept i on; i mpor t j ava. r mi . Not BoundExcept i on; i mpor t j avax. r mi . *; i mpor t j ava. ut i l . Vect or ; i mpor t j avax. nami ng. Nami ngExcept i on; i mpor t j avax. nami ng. I ni t i al Cont ext ; i mpor t j avax. nami ng. Cont ext ;
publ i c cl ass Hel l oCl i ent {
publ i c st at i c voi d mai n( St r i ng ar gs[ ] ) { Cont ext i c; Obj ect obj r ef ; Hel l oI nt er f ace hi ;
t r y { i c = new I ni t i al Cont ext ( ) ;
/ / 1: mengambi l r ef er ensi obj ek dar i Nami ng Ser vi ces / / dengan J NDI cal l . obj r ef = i c. l ookup( " Hel l oSer vi ce" ) ; Syst em. out . pr i nt l n( " Cl i ent : Obt ai ned a r ef . t o Hel l o ser ver . " ) ;
/ / 2: mengkhususkan r ef er ensi obj ek ke t i pe yang l ebi h konkr et / / dan i nvoke met ode. hi = ( Hel l oI nt er f ace) Por t abl eRemot eObj ect . nar r ow( obj r ef , Hel l oI nt er f ace. cl ass) ; hi . sayHel l o( " MARS " ) ;
} cat ch( Except i on e ) { Syst em. er r . pr i nt l n( " Except i on " + e + " Caught " ) ; e. pr i nt St ackTr ace( ) ; r et ur n; www.gangsir.com Rosa Ariani Sukamto
} } }
f. Menjalankan aplikasi
1. Buka command prompt, masuk ke direktori RMIIIOP 2. Ketik perintah: javac -d . -classpath . HelloImpl.java dimana d . berarti hasil file yang digenerasi disimpan di dalam direktori dimana kompilasi dilakukan, -classpath . berarti semua file yang diperlukan HelloImpl.java ada pada direktori kerja tempat kompilasi dilakukan 3. Ketik perintah: rmic -iiop HelloImpl perintah ini akan menghasilkan file: _Hel l oI nt er f ace_St ub. cl ass berperan sebagai stub milik klien pada CORBA _Hel l oI mpl _Ti e. cl ass berperan sebagai skeletons milik server pada CORBA 4. Ketik perintah: javac -d . -classpath . HelloInterface.java HelloServer.java HelloClient.java 5. Ketik perintah: start orbd -ORBInitialPort 1050 hingga muncul jendela ORB 6. Buka commad prompt kedua, masuk ke direktori RMIIIOP 7. Ketik perintah: j ava - cl asspat h . - Dj ava. nami ng. f act or y. i ni t i al =com. sun. j ndi . cosnami ng. CNCt xFact or y - Dj ava. nami ng. pr ovi der . ur l =i i op: / / l ocal host : 1050 Hel l oSer ver hingga muncul Hel l o Ser ver : Ready . . . 8. Buka command prompt ketiga, masuk ke direktori RMIIIOP 9. Ketik perintah: j ava - cl asspat h . - Dj ava. nami ng. f act or y. i ni t i al =com. sun. j ndi . cosnami ng. CNCt xFact or y - Dj ava. nami ng. pr ovi der . ur l =i i op: / / l ocal host : 1050 Hel l oCl i ent
hingga muncul Cl i ent : Obt ai ned a r ef . t o Hel l o ser ver . [pada jendela client] Hel l o f r om MARS [pada jendela server]
10. Tekan ctrl+c pada command prompt kedua untuk membunuh server dan jendela ORB.