Presentation is loading. Please wait.

Presentation is loading. Please wait.

UMBC Distributed Computing with Objects RMI/Corba CMSC 432 Shon Vick.

Similar presentations


Presentation on theme: "UMBC Distributed Computing with Objects RMI/Corba CMSC 432 Shon Vick."— Presentation transcript:

1 UMBC Distributed Computing with Objects RMI/Corba CMSC 432 Shon Vick

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 UMBC 9 Steps Design and Implement Components of Distributed Application Compile Sources and Generate Stubs and Skeletons Make Classes Network Accessible Start the Application

10 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

11 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

12 UMBC 12 Example Generic Compute Engine What it computes is not defined when engine is written Take advantage of central powerful machine Dynamic

13 UMBC 13 An Example

14 UMBC 14 How it works

15 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

16 Example 16

17 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

18 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

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

20 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

21 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

22 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

23 UMBC 23 Client Stub Skeleton Server Method Invocation Marshalled Parameters and Return Values Marshalling

24 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 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 ); } }

26 UMBC 26 Connecting Client to Server javac HelloServer.java HelloClient.java rmic HelloServer Rmiregistry & java –Djava.security.policy= HelloServer & java –Djava.security.policy= HelloClient

27 UMBC 27 A Policy File grant { // Allow everything for now permission java.security.AllPermission; };

28 UMBC 28 Client Defines task to be done by ComputeEngine

29 Example

30

31 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

32 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

33 UMBC 33 Selected References Advanced Techniques for Java Developers Chapter 7 http://java.sun.com/docs/books/tutorial/rmi/index.html 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 http://engronline.ee.memphis.edu/AdvJava/lecture.htmhttp://engronline.ee.memphis.edu/AdvJava/lecture.htm


Download ppt "UMBC Distributed Computing with Objects RMI/Corba CMSC 432 Shon Vick."

Similar presentations


Ads by Google