Anda di halaman 1dari 0

www.gangsir.

com Rosa Ariani Sukamto



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.

Anda mungkin juga menyukai