UMBC Distributed Computing with Objects RMI/Corba CMSC 432 Shon Vick
UMBC 2 Remote Method Invocation RMI JAVA-TO-JAVA Object running on one JVM can invoke methods on an object running on another JVM RMI provides communication between remote Java programs
UMBC 3 Overview Sever Creates Remote Objects Server Makes References to Them Accessible Server Waits on Remote Method Calls Client get References to Remote Objects Invokes Methods on Them Distributed Objects
UMBC 4 Distributed Objects Locate Remote Objects –Register –Pass and Return References Communicate with Remote Objects (Transparent to Programmer) Load Bytecode and transmit data over network
UMBC 5 Dynamic Code Loading Download code of an objects class if class not defined in receiver’s virtual machine RMI passes objects by true type Change behavior of application dynamically Compute Example
UMBC 6 Remote Interfaces, Objects, and Methods Distrubed application made up of interfaces and classes Some implementations reside on remote machines Objects with methods on remote VM’s are remote objects Object is remote by implementing remote interface
UMBC 7 Remote Interfaces Extends java.rmi.Remote Each remote method must declare java.rmi.RemoteException Remote objects are passed by reference between virtual machines, not a copy
UMBC 8 Stubs Remote reference is a stub Local representative or proxy Caller invokes method on stub which carries out method call on remote object Stub implements the same set of remote interfaces as remote object Only those methods defined in remote interface available to caller
UMBC 9 Steps Design and Implement Components of Distributed Application Compile Sources and Generate Stubs and Skeletons Make Classes Network Accessible Start the Application
UMBC 10 Details Object becomes remote by implementing a remote interface java.rmi.Remote Methods java.rmi.RemoteException in throws clause Stub is local proxy for remote object. Generated by rmic compiler Skeleton interfaces object and object manager on Server
UMBC 11 Details, contd. Define Remote Interface: specifies remote methods Implement Remote Objects: Implement the remote interface Implement Clients Put classes in Web accessible directory: remote interfaces, stubs, other download classes Start registry, start application
UMBC 12 Example Generic Compute Engine What it computes is not defined when engine is written Take advantage of central powerful machine Dynamic
UMBC 13 An Example
UMBC 14 How it works
UMBC 15 Interface Details Compute allows jobs to be submitted to the engine Task defines how the compute engine executes the given task. Passed by value between VM’s Return value is an Object
Example 16
UMBC 17 Implementing a Remote Interface Declare remote interfaces Define constructor for Remote object Provide implementations for remote methods Create and install security manager create instance of remote object register remote object with registry
UMBC 18 UnicastRemoteObject : Point to point communications with socket transport. Constructor exports object for calls. RMISecurityManager as restrictive as Applet Create instance and bind to registry. Instance is of type Compute. Name is host where registry is. UnicastRemoteObject
UMBC 19 Register Front-end for binding (registering) and looking up remote object is java.rmi.Naming interface Remote VM’s can look up objects by name in RMI registry. Name should inlcude name of host where registry and remote object run, and a name that identifies remote object in registry.
UMBC 20 Bind remote object to registry URL type format for host and name Default port is 1099 rmi::/ : /Compute RMI runtime substitutes reference to stub for remote object reference. Remote object implementations never leave JVM where created. RMI keeps ComputeEngine running Binding
UMBC 21 Stubs When client invokes remote method, it actually calls a regular method on a local JVM. This method is encapsulate in a stub class (surrogate) Stub encodes parameters (marshalling) Sends information over network to server
UMBC 22 Skeleton Makes sense out of information in packet from stub (Unmarshals) Passes it to actual object on local JVM Packages response and sends it back to client Stubs can be on local machine or loaded across network similar to applet
UMBC 23 Client Stub Skeleton Server Method Invocation Marshalled Parameters and Return Values Marshalling
The Server import java.rmi.*; import java.rmi.server.*; import java.net.*; public class HelloServer extends UnicastRemoteObject implements IHello { public HelloServer() throws RemoteException { hiMsg = "Hello, world!"; } public String sayHi() throws RemoteException { return hiMsg; } public static void main( String[ ] args ) { try { Naming.rebind( "hello", new HelloServer() ); } catch( RemoteException e ) { System.err.println( e ); } catch( MalformedURLException e ) { System.err.println( e ); } } private String hiMsg; } UMBC
25 The Client import java.rmi.*; public class HelloClient { public static void main( String[ ] args ) { System.setSecurityManager( new RMISecurityManager() ); try { IHello iface = (IHello) Naming.lookup( "rmi:// /hello" ); System.out.println( "Client says " + iface.sayHi() ); } catch( Exception e ) { System.err.println( e ); } }
UMBC 26 Connecting Client to Server javac HelloServer.java HelloClient.java rmic HelloServer Rmiregistry & java –Djava.security.policy= HelloServer & java –Djava.security.policy= HelloClient
UMBC 27 A Policy File grant { // Allow everything for now permission java.security.AllPermission; };
UMBC 28 Client Defines task to be done by ComputeEngine
Example
UMBC 31 Running the Example Pi class downloaded to server at runtime ComputeEngine stub downloaded to client at runtime Make jar file with compute package (interfaces) Distribute to developers Put classes in network accessible directory
UMBC 32 RMI uses URL protocols to download code Classpath should include location of jar files and source files Compile source ( javac ), generate stub ( rmic ) Source for the example discussed so far can be found in the Java Tutorial on RMIJava Tutorial on RMI Using RMI
UMBC 33 Selected References Advanced Techniques for Java Developers Chapter 7 Exploring Java, O’Reilly, Niemeyer & Peck Java RMI Remote Method Invocation, Troy Downing, IDG Books The RMI example comes from Core Web Programming, Marty Hall, Prentice Hall