Jumat, 21 November 2014

9 Langkah Membuat Aplikasi RMI Di Java

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.
  1. 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;
    }
    

  2. 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;
     }
    }

  3. 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);
      }
     }
    }
    

  4. 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);
      }
     }
    }
    

  5. 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.

  6. 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.

  7. Jalankan RMI Registry

    D:\RMI>start rmiregistry
    

    Akan muncul layar console rmiregistry. Biarkan saja dan jangan di close.

  8. Jalankan Aplikasi Server

    D:\RMI>java HelloServer

  9. 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