Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Java Remote Object Invocation (RMI)
Java RMI memungkinkan programmer untuk mengeksekusi kelas fungsi remote menggunakan panggilan fungsi lokal Local Machine (Client) SampleServer remoteObject; int s; … s = remoteObject.sum(1,2); System.out.println(s); Remote Machine (Server) public int sum(int a,int b) { return a + b; } 1,2 3 80
2
Arsitektur RMI Server pertama harus mengikat nama menjadi registri
Klien lookup nama server dalam registri untuk membangun referensi remote. Stub (potongan) tersebut serialisasi parameter untuk kerangka, kerangka memanggil metode remote dan serialisasi hasilnya kembali ke stub.
3
Stub (potongan) dan Skeleton (keragka)
Klien memanggil metode remote, panggilan tersebut akan diteruskan ke stub. Stub bertanggung jawab untuk mengirimkan panggilan jarak jauh ke kerangka diserver Stub membuka socket ke remote server j, parameter objek meneruskan aliran data untuk kerangka. Kerangka berisi metode yang menerima panggilan dari remote parameter, dan memanggil implementasi remote object.
4
Langkah untuk Mengembangkan Sistem RMI
1.Tentukan remote interface 2. Mengembangkan objek remote dengan mengimplementasikan remote interface. 3. Membuat program klien. 4. Mengkompilasi file sumber dari kode Java. 5. Menghasilkan Stub klien dan kerangka server (skeletons). 6. Menjalankan registri RMI. 7. Menjalankan remote objek server. 8. Manjalankan program klien
5
Langkah 1: Mendefinisikan Remote Interface
Untuk membuat aplikasi RMI, langkah pertama adalah mendefinisikan sebuah remote interface antara klien dan objek server. /* SampleServer.java */ import java.rmi.*; public interface SampleServer extends Remote { public int sum(int a,int b) throws RemoteException; }
6
Langkah 2: Memebuat objek remote dan antarmuka
Server sebagai komputer remote secara unicast. Membuat program di server dengan kelas2 java.rmi.server.UnicastRemoteObject. Server menggunakan RMISecurityManager melakukan komunikasi jarak jauh secara remote. /* SampleServerImpl.java */ import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; public class SampleServerImpl extends UnicastRemoteObject implements SampleServer { SampleServerImpl() throws RemoteException super(); }
7
Langkah 2: Membuat objek remote dan antarmuka
Implementasi remote methods /* SampleServerImpl.java */ public int sum(int a,int b) throws RemoteException { return a + b; } Server mengikat nama menjadi registri, klien akan mencari nama server. Menggunakan java.rmi.Naming kelas untuk mengikat nama server ke registry. Dalam contoh ini nama panggilan “SAMPLE-SERVER”. metode main dari objek server, RMI registri meng-create dan menginstall, pengaturan keamanan .
8
Langkah ke 2: /* SampleServerImpl.java */
public static void main(String args[]) { try System.setSecurityManager(new RMISecurityManager()); //set the security manager //create a local instance of the object SampleServerImpl Server = new SampleServerImpl(); //put the local instance in the registry Naming.rebind("SAMPLE-SERVER" , Server); System.out.println("Server waiting....."); } catch (java.net.MalformedURLException me) { System.out.println("Malformed URL: " + me.toString()); } catch (RemoteException re) { System.out.println("Remote exception: " + re.toString()); }
9
Langkah 3: Mambuat Program Client
Agar objek klien untuk memanggil metode di server, pertama kali harus mencari nama server dalam registri. menggunakan kelas java.rmi.Naming untuk lookup nama server. Nama server ditentukan sebagai URL dari ( rmi://host:port/name ) Default RMI port : 1099. Nama ditentukan dalam URL harus sama persis nama yang server telah terikat ke registri. Dalam contoh ini, nama adalah “SAMPLE-SERVER” Metode remote diprogram menggunakan nama remote interface (RemoteObject) sebagai awalan dan nama metode remote (jumlah) sebagai akhiran.
10
Langkah 3: Membuat Program Client
import java.rmi.*; import java.rmi.server.*; public class SampleClient { public static void main(String[] args) // set the security manager for the client System.setSecurityManager(new RMISecurityManager()); //get the remote object from the registry try System.out.println("Security Manager loaded"); String url = "//localhost/SAMPLE-SERVER"; SampleServer remoteObject = (SampleServer)Naming.lookup(url); System.out.println("Got remote object"); System.out.println(" = " + remoteObject.sum(1,2) ); } catch (RemoteException exc) { System.out.println("Error in lookup: " + exc.toString()); } catch (java.net.MalformedURLException exc) { System.out.println("Malformed URL: " + exc.toString()); } catch (java.rmi.NotBoundException exc) { System.out.println("NotBound: " + exc.toString());
11
Langkah 4 & 5: Mengkompilasi file sumber Java & Menghasilkan klien Stub dan kerangka ( skeleton) Server Kompilasi program dan mengeksekusi ~/rmi Ketika program antarmuka selesai, Anperlu untuk menghasilkan stub dan kode kerangka. Sistem RMI menyediakan compiler RMI (rmic) yang mengambil antarmuka yang dihasilkan dari kelas dan kode prosedur stub. $ set CLASSPATH=”~/rmi” $ javac SampleServer.java $ javac SampleServerImpl.java $ rmic SampleServerImpl $ javac SampleClient.java
12
Langkah 6: Menjalankan RMI registry
Aplikasi RMI perlu menginstal ke Registry. Dan Registry menjalankan rmiregisty. Registry menggunakan port 1099 secara default, juga dapat mengikat rmiregistry ke port yang berbeda dengan menunjukkan nomor port baru sebagai: rmiregistry <new port> $ rmiregistry Catatan: Pada Windows, Anda harus mengetikkan dari command: > start rmiregistry
13
Langkah 7 & 8 : Mulai objek remote server & dari klien
Setelah Registry dijalankan, server berjalan dan dapat menyimpan sendiri dalam Registry. Untuk security model in Java 2.0, mengatur security policy untuk RMI sebagaiberikut : $java –Djava.security.policy=policy.all SampleServerImpl $java –Djava.security.policy=policy.all SampleClient
14
Java Policy File Di Jawa 2, aplikasi java harus terlebih dahulu memperoleh informasi mengenai hak-hak istimewanya. Hal ini dapat memperoleh kebijakan keamanan melalui file policy. Dalam contoh di atas, kita membiarkan kode Java untuk memiliki semua hak akses, mengandung dari policy.all policy file adalah: grant { permission java.security.AllPermission; }; Now, we given an example for assigning resource permissions: permission java.io.filePermission “/tmp/*”, “read”, “write”; permission java.net.SocketPermission “somehost.somedomain.com:999”,”connect”; permission java.net.SocketPermission “*: ”,”connect,request”; permission java.net.SocketPermission “*:80”,”connect”;
15
Untuk Java Policy File 1. memungkinkan kode Java untuk membaca / menulis file hanya di bawah direktori / tmp, termasuk subdirektori 2. memungkinkan semua kelas java untuk membangun koneksi jaringan dengan host "somehost.somedomain.com" pada port 999 3. memungkinkan kelas untuk koneksi ke atau menerima koneksi pada port Unprivileged lebih besar dari 1024, pada host apapun 4. memungkinkan semua kelas untuk menghubungkan ke port HTTP 80 pada host manapun. secara detail bisa juga dilihat di: /security-spec.doc3.html
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.