IKH331-07-java-rmi
-
Upload
anung-ariwibowo -
Category
Education
-
view
813 -
download
0
description
Transcript of IKH331-07-java-rmi
![Page 1: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/1.jpg)
Java RMI, 17 November 2011
![Page 2: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/2.jpg)
Methods can be called by another JVM on a different host
Interface is remote if it extends Remote Remote object implements a remote
interface and extends UnicastRemoteObject
Pemrograman Terdistribusi 2 Sistem Terdistribusi (IKH331)
![Page 3: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/3.jpg)
Primitive types are passed by value Objects (that are not remote)
They are serialized and then passed by value.
At the other end the objects are deserialized
Any references inside the object are also serialized
Remote Objects
Passed as remote references (stubs)
Pemrograman Terdistribusi 3 Sistem Terdistribusi (IKH331)
![Page 4: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/4.jpg)
Obtain a reference for the remote object URL for the remote object is specified as
rmi://host:port/name
Pemrograman Terdistribusi 4 Sistem Terdistribusi (IKH331)
![Page 5: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/5.jpg)
public class HiDunia {
public String sayHalo() {
return "Halo dunia!";
}
public static void main (String args[]) {
String response = this.sayHalo();
System.out.println(response); }
}
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 5
![Page 6: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/6.jpg)
public class Halo {
public String sayHalo() {
return "Hello, world!";
}
}
public class HaloDunia {
public static void main (String args[]) {
Halo kelas = new Halo();
String response = kelas.sayHalo();
System.out.println(response); }
}
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 6
![Page 7: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/7.jpg)
Satu address space
Code segment
Data segment
Stack segment
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 7
![Page 8: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/8.jpg)
Proses berbeda
class Halo
class HaloDunia
mungkin berjalan di node yang sama
atau node berbeda
Different address space stub method Remote object
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 8
![Page 9: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/9.jpg)
Mendefinisikan remote interface Mengimplementasikan interface (server)
Buat dan ekspor remote object
Registrasi remote object dengan Java RMI registry
Mengimplementasikan client Jalankan server Jalankan client
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 9
![Page 10: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/10.jpg)
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 10
![Page 11: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/11.jpg)
import java.rmi.Remote;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server() {}
public String sayHello() {
return "Hello, world!";
}
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 11
![Page 12: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/12.jpg)
public static void main(String args[]) {
try {
Server obj = new Server();
Hello stub = (Hello)
UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " +
e.toString());
e.printStackTrace();
}
}
}
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 12
![Page 13: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/13.jpg)
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
private Client() {}
public static void main(String[] args) {
String host = (args.length < 1) ? null : args[0];
try {
Registry registry = LocateRegistry.getRegistry(host);
Hello stub = (Hello) registry.lookup("Hello");
String response = stub.sayHello();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " +
e.toString());
e.printStackTrace();
}
}
} Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 13
![Page 14: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/14.jpg)
javac –d destDir Server.java
javac –d destDir Client.java
start rmiregistry
java –Djava.rmi.server.codebase=file:destDir/ Server
java –Djava.rmi.server.codebase=file:destDir/ Client
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 14
![Page 15: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/15.jpg)
Default pada port 1099 start rmiregistry 2011 Registry reg =
LocateRegistry.getRegistry(2011);
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 15
![Page 16: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/16.jpg)
Implementasikan sebuah aplikasi kalkulator sederhana dengan RMI
Client menerima ekspresi matematika (+, x, /, -)
Server mengimplementasikan method-method yang sesuai
Parsing ekspresi matematika dengan StringTokenizer
untuk menentukan method apa yang dipanggil
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 16
![Page 17: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/17.jpg)
Kerangka program Client
Baca ekspresi matematika
Tokenize, untuk mendapatkan ekspresi matematik yang digunakan
Jika operatornya +, panggil method RMI penjumlahan()
Jika operatornya x, panggil method RMI perkalian()
dst
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 17
![Page 18: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/18.jpg)
Program Server
Implementasikan method-method untuk operasi dasar matematika
int perkalian(int a, int b);
int pembagian(int a, int b);
int penjumlahan(int a, int b);
int pengurangan(int a, int b);
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 18
![Page 19: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/19.jpg)
Waktu pengerjaan
Dua pekan (30 November 2011, pukul 12.00 WIB)
By e-mail [email protected]
Subject "IKH331 RMI"
Bonus
Evaluasi ekspresi yang lebih kompleks
3 + 4 x 2
(3 + 4) x 2
Pengumpulan sebelum tenggat waktu Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 19
![Page 20: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/20.jpg)
Java RMI Hello World, http://download.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html
Vijay Garg, "Concurrent and Distributed Programming in Java"
Source code http://users.ece.utexas.edu/~garg/jbk.html
http://tjerdastangkas.blogspot.com/search/label/ikh331
Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 20
![Page 21: IKH331-07-java-rmi](https://reader034.fdocuments.in/reader034/viewer/2022051817/547c803eb4af9fc3158b515e/html5/thumbnails/21.jpg)
Kamis, 17 November 2011