Download presentation
Presentation is loading. Please wait.
Published byReynard Hamilton Modified over 8 years ago
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
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.