RMI adalah singkatan dari Remote Method Invocation. Dengan menggunakan fasilitas yang terdapat didalam java ini, kita bisa membuat aplikasi dengan arsitektur 3 tingkat (3 Tier Architectur). Untuk membuat sebuah aplikasi berbasis RMI, maka kita harus membuat 2 aplikasi, yaitu 1 aplikasi RMI yang bertindak sebagai server dan satunya lagi aplikasi yang bertindak sebagai client. Gambar dibawah ini menunjukkan skema komunikasi yang terjadi antara aplikasi RMI client dan aplikasi RMI server.
Alur Komunikasi antara RMI Client dengan RMI Server
Sebelum memulai pembuatan projek RMI ini, set terlebih dahulu “Path” dan “ClassPath” java anda berada melalui Command Prompt. Untuk memudahkan disini saya membuat sebuah File Batch yang dapat dijalankan melalui Command Prompt, setiap kali Command Prompt baru di buka dengan tujuan untuk menjalankan perintah-perintah java. Melalui Notepad buat sebuah Batch File yang bernama “atur.batch”, kemudian isi dengan baris berikut :
SET CLASSPATH=.;C:\Program Files\Java\jdk1.7.0_06\lib\tools.jar
SET PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_06\bin
Kemudian SAVE. Letakkan file ini di folder dimana file-file source java anda simpan, agar mudah dalam proses kompilasi dan eksekusi perintah java lainnya.
- Definisikan
Remote Interface
Buat sebuah file java bertipe interface menggunakan notepad dan beri nama dengan “iHello.java”. Adapun isi file tersebut adalah seperti berikut :
public interface iHello extends java.rmi.Remote
{
public void sendHello(String text) throws java.rmi.RemoteException;
public String recvHello() throws java.rmi.RemoteException;
}
- Buat Remote Object dengan mengimplementasikan Remote Interface
Masih menggunakan notepad, buat sebuah class yang mengimplementasikan Remote Interface. Beri nama “implHello.java”. Isi file tersebut dengan kode berikut ini :
import java.rmi.*;
import java.rmi.server.*;
public class implHello extends UnicastRemoteObject implements iHello
{
private String str;
public implHello() throws RemoteException
{
super();
}
public void sendHello(String str)
{
this.str = str;
}
public String recvHello() throws RemoteException
{
return this.str;
}
}
- Buat Aplikasi Remote Server
Buat file java baru dengan nama “HelloServer”. Isikan kode berikut :
import java.rmi.*;
import java.rmi.UnknownHostException;
import java.net.*;
public class HelloServer
{
public HelloServer() throws RemoteException, MalformedURLException, NotBoundException
{
iHello Hello = new implHello();
Naming.rebind("rmi://localhost:1099/Hello", Hello);
}
public static void main(String args[])
{
try
{
new HelloServer();
}
catch (UnknownHostException uhe)
{
System.out.println("Host tidak diketahui: " + uhe);
}
catch (RemoteException re)
{
System.out.println("Gagal mengeksekusi remote object: " + re);
}
catch (MalformedURLException mue)
{
System.out.println("Internal error: " + mue);
}
catch (NotBoundException nbe)
{
System.out.println("Proses bind gagal: " + nbe);
}
}
}
- Buat
Aplikasi Remote Client
Adapun source file untuk aplikasi remote client, berisi kode-kode berikut :
import java.rmi.*;
import java.net.*;
public class HelloClient
{
public static void main(String[] args)
{
try
{
iHello HelloClient = (iHello) Naming.lookup("rmi://localhost/Hello");
HelloClient.sendHello("Pesan ini gue kirim dari aplikasi Client..");
System.out.println(HelloClient.recvHello());
}
catch (MalformedURLException mue)
{
System.out.println("MalformedURLException: " + mue);
}
catch (RemoteException re)
{
System.out.println("RemoteException: " + re);
}
catch (NotBoundException nbe)
{
System.out.println("NotBoundException: " + nbe);
}
}
}
- Kompilasi
File Kode Java
Hasil dari pembuatan 4 file sumber java tersebut adalah seperti di bawah ini.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
D:\RMI>ls -l
total 8
-rw-r--r-- 1 Havizul Administ 626 Nov 8 13:20 HelloClient.java
-rw-r--r-- 1 Havizul Administ 801 Nov 8 13:19 HelloServer.java
-rw-r--r-- 1 Havizul Administ 184 Nov 8 13:19 iHello.java
-rw-r--r-- 1 Havizul Administ 359 Nov 8 13:19 implHello.java
-rwxr-xr-x 1 Havizul Administ 118 Nov 2 21:11 atur.bat
Langkah selanjutnya adalah mengkompilasi file-file sumber java tersebut. Namun sebelumnya atur terlebih dahulu “Class Path” dan “Path” dengan menjalankan file “atur.bat”.
D:\RMI>atur.bat
D:\RMI>SET CLASSPATH=.;C:\Program Files\Java\jdk1.7.0_06\lib\tools.jar
D:\RMI>SET PATH=C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin;C:\Inprise\vbroker\bin;C:\PROGRA~1\Borland\CBUILD~1\Bin;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Bitvise SSH Client;C:\Program Files\Java\jdk
1.7.0_06\bin
Kemudian, melalui Command Prompt yang sama, kompilasi kode sumber java.
D:\RMI>javac iHello.java
D:\RMI>javac implHello.java
D:\RMI>javac HelloServer.java
D:\RMI>javac HelloClient.java
D:\RMI>ls -l
total 8
-rw-r--r-- 1 Havizul Administ 1221 Nov 8 13:30 HelloClient.class
-rw-r--r-- 1 Havizul Administ 626 Nov 8 13:20 HelloClient.java
-rw-r--r-- 1 Havizul Administ 1301 Nov 8 13:30 HelloServer.class
-rw-r--r-- 1 Havizul Administ 801 Nov 8 13:19 HelloServer.java
-rw-r--r-- 1 Havizul Administ 266 Nov 8 13:29 iHello.class
-rw-r--r-- 1 Havizul Administ 184 Nov 8 13:19 iHello.java
-rw-r--r-- 1 Havizul Administ 499 Nov 8 13:29 implHello.class
-rw-r--r-- 1 Havizul Administ 359 Nov 8 13:19 implHello.java
-rwxr-xr-x 1 Havizul Administ 118 Nov 2 21:11 atur.bat
Sekarang kompilasi terhadap file-file java telah menghasilkan file-file class yang diperlukan untuk proses pembuatan / generate Stub & Skeleton.
- Generate
Client Stub dan Server Skeleton
Masih menggunakan Layar Command Prompt yang sama (Jika anda menggunakan Layar Command Prompt yang baru maka anda harus mengeksekusi kembali file “atur.bat”), untuk men-generate Stub & Skeleton, ikuti langkah dibawah ini.
D:\RMI>rmic -v1.2 implHello
D:\RMI>ls -l
total 9
-rw-r--r-- 1 Havizul Administ 1221 Nov 8 13:30 HelloClient.class
-rw-r--r-- 1 Havizul Administ 626 Nov 8 13:20 HelloClient.java
-rw-r--r-- 1 Havizul Administ 1301 Nov 8 13:30 HelloServer.class
-rw-r--r-- 1 Havizul Administ 801 Nov 8 13:19 HelloServer.java
-rw-r--r-- 1 Havizul Administ 266 Nov 8 13:29 iHello.class
-rw-r--r-- 1 Havizul Administ 184 Nov 8 13:19 iHello.java
-rw-r--r-- 1 Havizul Administ 499 Nov 8 13:29 implHello.class
-rw-r--r-- 1 Havizul Administ 359 Nov 8 13:19 implHello.java
-rw-r--r-- 1 Havizul Administ 1956 Nov 8 13:38 implHello_Stub.class
-rwxr-xr-x 1 Havizul Administ 118 Nov 2 21:11 atur.bat
Sekarang sudah terdapat file “implHello_Stub.class” yang akan digunakan sebagai Client Stub maupun Server Skeleton.
- Jalankan
RMI Registry
Akan muncul layar console rmiregistry. Biarkan saja dan jangan di close.
- Jalankan
Aplikasi Server
- Jalankan
Aplikasi Client
Disini anda harus membuka layar Command Prompt yang baru. Maka anda harus kembali menjalankan file “atur.bat” di layar yang baru ini.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\havizul>d:
D:\>cd rmi
D:\RMI>atur.bat
D:\RMI>SET CLASSPATH=.;C:\Program Files\Java\jdk1.7.0_06\lib\tools.jar
D:\RMI>SET PATH=C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin;C:\Inprise\vbroker\bin;C:\PROGRA~1\Borland\CBUILD~1\Bin;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\Windows\system32;C:\W
indows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Bitvise SSH Client;C:\Program Files\Java\jdk
1.7.0_06\bin
Kemudian silahkan mencoba menjalankan Aplikasi Client.
D:\RMI>java HelloClient
Pesan ini gue kirim dari aplikasi Client..
Selamat Aplikasi RMI yang kita buat telah berhasil berjalan di localhost.
Tidak ada komentar:
Posting Komentar