Remote Method Invocation
-
Upload
elliando-dias -
Category
Technology
-
view
1.203 -
download
1
Transcript of Remote Method Invocation
![Page 1: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/1.jpg)
Netprog 2002 Java RMI 1
Remote Method Invocation
Based on Notes by D. HollingerAlso based on Sun’s Online Java
Tutorial
![Page 2: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/2.jpg)
Netprog 2002 Java RMI 2
Network Programming Paradigms
• Sockets programming: design a protocol first, then implement clients and servers that support the protocol.
• RMI: Develop an application, then (statically) move some objects to remote machines.– Not concerned with the details of the actual
communication between processes –everything is just method calls.
![Page 3: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/3.jpg)
Netprog 2002 Java RMI 3
Call Semantics
• Method Call Semantics – what does it mean to make a call to a method?– How many times is the method run?– How do we know the method ran at all?
• RMI does a great job of providing natural call semantics for remote objects/methods.– Simply a few additional Exceptions that you need
to handle.– Objects implementing the Remote interface are
passed by reference. Non-remote (serializable) objects and primitive types are passed by value.
![Page 4: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/4.jpg)
Netprog 2002 Java RMI 4
Finding Remote Objects
• It would be awkward if we needed to include a hostname, port and protocol with every remote method invocation.
• RMI provides a Naming Service through the RMI Registry that simplifies how programs specify the location of remote objects.– This naming service is a JDK utility called rmiregistry that runs at a well known address (by default).
![Page 5: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/5.jpg)
Netprog 2002 Java RMI 5
RMI Adds a few layers
Server App.
Skeleton
Remote Reference
Transport
Client App.
Stubs
Remote Reference
Transport
![Page 6: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/6.jpg)
Netprog 2002 Java RMI 6
Remote Object References• The client acquires a reference to a remote
object. – This part is different from creating a local object.
• The client calls methods on the remote object– No (syntactic) difference!– Just need to worry about a few new exceptions.
![Page 7: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/7.jpg)
Netprog 2002 Java RMI 7
Overview of RMI Programming
• Define an interface that declares the methods that will be available remotely.
• The server program must include a class that implements this interface.
• The server program must create a remote object and register it with the naming service.
• The client program creates a remote object by asking the naming service for an object reference.
![Page 8: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/8.jpg)
Netprog 2002 Java RMI 8
Java Interfaces
• Similar to Class• No implementation! All methods are
abstract (virtual for C++ folks).• Everything is public.• No fields defined, just Methods.• No constructor• an Interface is an API that can be
implemented by a Class.
![Page 9: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/9.jpg)
Netprog 2002 Java RMI 9
Interfaces and Inheritance
• In Java a class can only extend a single superclass (single inheritance).
• A class can implement any number of interfaces.– end result is very similar to multiple
inheritance.
![Page 10: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/10.jpg)
Netprog 2002 Java RMI 10
Sample Interface
public interface Shape {public double getArea();public void draw();public void fill(Color c);
}
![Page 11: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/11.jpg)
Netprog 2002 Java RMI 11
Implementing an Interfacepublic class Circle implements Shape {
private double radius;private Point center;
// define a constructor and other// methods
// MUST define the methods:// getArea();// draw();// fill(Color c);
}
![Page 12: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/12.jpg)
Netprog 2002 Java RMI 12
Server Details – extending Remote
• Create an interface the extends the java.rmi.Remote interface.– This new interface includes all the public methods
that will be available as remote methods.
import java.rmi.*;public interface MyRemote extends Remote {public int foo(int x) throws RemoteException;public String blah(int y) throws RemoteException;. . .
}
![Page 13: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/13.jpg)
Netprog 2002 Java RMI 13
How the interface will be used
Class implementing your remote service
Your Interface UnicastRemoteObject
Remote Interface RemoteServer Class
extends
implementsextends
extendsprovides methodsneeded by
![Page 14: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/14.jpg)
Netprog 2002 Java RMI 14
Server Details –Implementation Class
• Create a class that implements the interface.– The class should extend UnicastRemoteObject*
• This class needs a constructor that throws RemoteException !
• This class is now used by rmic to create the stub and skeleton code.*It doesn’t have to extend UnicastRemoteObject, there is another way…
![Page 15: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/15.jpg)
Netprog 2002 Java RMI 15
Remote Object Implementation Classpublic class MyRemoteImpl extends
UnicastRemoteObject implements MyRemote {
public MyRemoteImpl() throws RemoteException {}
public int foo(int x) {return(x+1);
}public String blah(int y) {return(“Your number is “ + y);
}}
![Page 16: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/16.jpg)
Netprog 2002 Java RMI 16
Generating stubs and skeleton
• Compile the remote interface and implementation:
> javac MyRemote.java MyRemoteImpl.java
• Use rmic to generate MyRemoteImpl_stub.class,MyRemoteImpl_skel.class
> rmic MyRemoteImpl
![Page 17: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/17.jpg)
Netprog 2002 Java RMI 17
Server Detail – main()• The server main() needs to:
– create a remote object.– register the object with the Naming service.
public static void main(String args[]) {try {
MyRemoteImpl r = new MyRemoteImpl();Naming.bind(“joe”,r);
} catch (RemoteException e) {. . .
![Page 18: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/18.jpg)
Netprog 2002 Java RMI 18
Client Details
• The client needs to ask the naming service for a reference to a remote object.– The client needs to know the hostname or IP
address of the machine running the server.– The client needs to know the name of the remote
object.
• The naming service uses URIs to identify remote objects.
![Page 19: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/19.jpg)
Netprog 2002 Java RMI 19
Using The Naming service
• Naming.lookup() method takes a string parameter that holds a URI indicating the remote object to lookup.
rmi://hostname/objectname
• Naming.lookup() returns an Object!• Naming.lookup() can throw
– RemoteException– MalformedURLException
![Page 20: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/20.jpg)
Netprog 2002 Java RMI 20
Getting a Remote Objecttry {
Object o = Naming.lookup(“rmi://monica.cs.rpi.edu/joe”);
MyRemote r = (MyRemote) o;// . . . Use r like any other Java object!
} catch (RemoteException re) {. . .
} catch (MalformedURLException up) {throw up;
}
![Page 21: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/21.jpg)
Netprog 2002 Java RMI 21
Starting the Server
• First you need to run the Naming service server:
rmiregistry• Now run the server:
java MyRemoteImpl
![Page 22: Remote Method Invocation](https://reader034.fdocuments.in/reader034/viewer/2022052311/55848c7cd8b42a043a8b4d4d/html5/thumbnails/22.jpg)
Netprog 2002 Java RMI 22
Sample Code
• There is sample RMI code on the course homepage:– BankAccount: remote access to a bank
account– SimpleRMI: remote integer arithmetic– AlternativeSimpleRMI: Implementation
class doesn’t extend UnicastRemoteObject– RemoteSort: remote sort server – uses
Java List objects