09/24/24 B.Ramamurthy 1
Remote Method Invocation
B.Ramamurthy
Chapter 20
09/24/24 B.Ramamurthy 2
Introduction
 Remote Method Invocation (RMI) is Java’s
implementation of object-to-object
communication among Java objects to
realize a distributed computing model.
 RMI allows us to distribute our objects on
various machines, and invoke methods on
the objects located on remote sites.
09/24/24 B.Ramamurthy 3
RMI-based Distributed
System
XYZ
Implementation
4.
Client Host Server Host
XYZ
Client
Stub Skeleton
XYZ
interface
uses implements
1.
2.
3. 3.
5.
09/24/24 B.Ramamurthy 4
Steps in RMI-based
Application
1. Design the interface for the service.
2. Implement the methods specified in
the interface.
3. Generate the stub and the skeleton.
4. Register the service by name and
location.
5. Use the service in an application.
09/24/24 B.Ramamurthy 5
Compile and Register
Commands
Client Host Server Host
XYZ
Client
Stub Skeleton
XYZ
interface
uses implements
1.
2.
3. 3.
5.
XYZ
Implementation
rmic
rmiregistry
Stores object by name
Finds object by name
09/24/24 B.Ramamurthy 6
More Details
 Once the object (or service) is registered,
a client can look up that service.
 A client (application) receives a reference
that allows the client to use the service
(call the method).
 Syntax of calling is identical to a call to a
method of another object in the same
program.
09/24/24 B.Ramamurthy 7
Parameter Marshalling
 Transfer of parameters (or marshalling) is
done by the RMI.
 Complex objects are streamed using
Serialization.
 RMI model of networking for distributed
system involves only Java.
 No need to learn IDL or any other
language.
09/24/24 B.Ramamurthy 8
Case Study : Temperature
Service
 Lets create a distributed system using
RMI model for networking (remote
access).
 Basically this program will download
the weather (temperature) information
from the site:
http://iwin.nws.noaa.gov/iwin/us/traveler.html
09/24/24 B.Ramamurthy 9
Defining Remote
Interface : Fig.20.1
import java.rmi.*;
// the interface extends Remote interface
// any class implementing Remote can be accessed
remotely security permitting
public interface TemperatureServer extends
Remote
{ // specify methods that can be called remotely
// each method “throws RemoteException”
}
09/24/24 B.Ramamurthy 10
RemoteException
 Any time you depend on outside entities there
is a potential for problems in communication,
networking, server crash etc.
 Any exception due to these should be
handled by the services.
 This feature imparts robustness to the
application.
 Java mandates this feature for any RMI
service.
09/24/24 B.Ramamurthy 11
Implementing the Remote
Interface
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
// others as needed
TemperatureServerImpl
extends UnicastRemoteObject
implements TemperatureServer {
09/24/24 B.Ramamurthy 12
TemperatureServerImpl
 This class’s constructor calls a private
method which in turn:
1. Connects to the url specified
2. Streams into a buffer the page referenced.
3. Parses the buffer to get the required data.
4. Creates an array of weather information.
09/24/24 B.Ramamurthy 13
TemperatureServerImpl
(contd.)
 It implements the service method
getWeatherInfo which simply returns
the weather data gathered.
 The main method instantiates an object
for the service, and registers it with
rmiregistry.
09/24/24 B.Ramamurthy 14
Streaming URLs
 Using the openStream of java.net.URL
class you can stream in the file specified
by an universal resource locator(url).
 It can be streamed into a buffer where
it can be analyzed for information.
 Any number of urls can be streamed in.
09/24/24 B.Ramamurthy 15
Unicast Communication
 When you are interested in a particular
remote site you will direct your net
connection to that particular site using
unicast.
 It allows point-to-point method calls
between objects using socket-based
communication.
09/24/24 B.Ramamurthy 16
Server Object Name
 Syntax for the server object name is:
//host:port/remoteObjectName
 Default port number for rmiregistry is 1099
 For local host the object name:
//localhost/TempServer
For a remote host, for example
//127.0.0.1/TempServer
09/24/24 B.Ramamurthy 17
Name Binding
 rebind method binds a server’s object
name to the object’s name as it is in the
registry.
 Clients use the name in the registry.
 There is also a bind() method.
 But rebind is better since it binds the
most recently registered object.
09/24/24 B.Ramamurthy 18
WeatherInfo class
 It is very traditional class for keeping
the information about the temperature
at a single location.
 It has data fields : cityName,
temperature, and description and get
methods for these.
 An array of objects of this class is used
in the server implementation.
09/24/24 B.Ramamurthy 19
Temperature Client
import java.rmi.*;
// import other packages
 constructor calls a private method
getRemoteTemp which takes care of
lookup of remote object and access.
 In this application it also displays the
information.
09/24/24 B.Ramamurthy 20
Temperature Client
(contd.)
 The main method in this client can get
the IP address of the remote host as a
command line argument.
 Command line argument is an array of
String of items in the command line
after the name of the application.
09/24/24 B.Ramamurthy 21
Client Details
 The name of the server object along
with the IP of the remote location is
used in Naming class’s lookup method
to get an object reference.
 This object reference is then used for
remote method calls.
 Observe that there is no difference
between the local and remote call.
09/24/24 B.Ramamurthy 22
WeatherItem class
 Is used in the Graphical display of the
weather information.
09/24/24 B.Ramamurthy 23
Preparing the Application
1. Compile all the class using javac.
2. Generate the stub and the skeleton:
rmic -v1.2 TemperatureServerImpl
3. Then start the registry (this will be
running as a daemon)
rmiregistry &
09/24/24 B.Ramamurthy 24
Preparing the Application
4. Run the server which will register with the
RMI registry.
Java TemperatureServerImpl &
5. Run the client.
Java TemperatureClient &
or
java TemperatureClient {IPAddress}
java TemperatureClient 192.168.0.150
09/24/24 B.Ramamurthy 25
Summary
 We discussed the core concepts in
implementing a distributed systems
using RMI.
 Temperature examples shown illustrates
all the important RMI features.
 The temperature example shown also
illustrates how you may access data
available in resources identified URLs.
09/24/24 B.Ramamurthy 26
Chapter 16 : Multimedia
 We will analyze programs: 16.2, 16.6,
16.7.
 HTMLConverter details are given at the
end of this chapter.

Remote method invocation distribution system

  • 1.
    09/24/24 B.Ramamurthy 1 RemoteMethod Invocation B.Ramamurthy Chapter 20
  • 2.
    09/24/24 B.Ramamurthy 2 Introduction Remote Method Invocation (RMI) is Java’s implementation of object-to-object communication among Java objects to realize a distributed computing model.  RMI allows us to distribute our objects on various machines, and invoke methods on the objects located on remote sites.
  • 3.
    09/24/24 B.Ramamurthy 3 RMI-basedDistributed System XYZ Implementation 4. Client Host Server Host XYZ Client Stub Skeleton XYZ interface uses implements 1. 2. 3. 3. 5.
  • 4.
    09/24/24 B.Ramamurthy 4 Stepsin RMI-based Application 1. Design the interface for the service. 2. Implement the methods specified in the interface. 3. Generate the stub and the skeleton. 4. Register the service by name and location. 5. Use the service in an application.
  • 5.
    09/24/24 B.Ramamurthy 5 Compileand Register Commands Client Host Server Host XYZ Client Stub Skeleton XYZ interface uses implements 1. 2. 3. 3. 5. XYZ Implementation rmic rmiregistry Stores object by name Finds object by name
  • 6.
    09/24/24 B.Ramamurthy 6 MoreDetails  Once the object (or service) is registered, a client can look up that service.  A client (application) receives a reference that allows the client to use the service (call the method).  Syntax of calling is identical to a call to a method of another object in the same program.
  • 7.
    09/24/24 B.Ramamurthy 7 ParameterMarshalling  Transfer of parameters (or marshalling) is done by the RMI.  Complex objects are streamed using Serialization.  RMI model of networking for distributed system involves only Java.  No need to learn IDL or any other language.
  • 8.
    09/24/24 B.Ramamurthy 8 CaseStudy : Temperature Service  Lets create a distributed system using RMI model for networking (remote access).  Basically this program will download the weather (temperature) information from the site: http://iwin.nws.noaa.gov/iwin/us/traveler.html
  • 9.
    09/24/24 B.Ramamurthy 9 DefiningRemote Interface : Fig.20.1 import java.rmi.*; // the interface extends Remote interface // any class implementing Remote can be accessed remotely security permitting public interface TemperatureServer extends Remote { // specify methods that can be called remotely // each method “throws RemoteException” }
  • 10.
    09/24/24 B.Ramamurthy 10 RemoteException Any time you depend on outside entities there is a potential for problems in communication, networking, server crash etc.  Any exception due to these should be handled by the services.  This feature imparts robustness to the application.  Java mandates this feature for any RMI service.
  • 11.
    09/24/24 B.Ramamurthy 11 Implementingthe Remote Interface import java.rmi.*; import java.rmi.server.*; import java.net.*; // others as needed TemperatureServerImpl extends UnicastRemoteObject implements TemperatureServer {
  • 12.
    09/24/24 B.Ramamurthy 12 TemperatureServerImpl This class’s constructor calls a private method which in turn: 1. Connects to the url specified 2. Streams into a buffer the page referenced. 3. Parses the buffer to get the required data. 4. Creates an array of weather information.
  • 13.
    09/24/24 B.Ramamurthy 13 TemperatureServerImpl (contd.) It implements the service method getWeatherInfo which simply returns the weather data gathered.  The main method instantiates an object for the service, and registers it with rmiregistry.
  • 14.
    09/24/24 B.Ramamurthy 14 StreamingURLs  Using the openStream of java.net.URL class you can stream in the file specified by an universal resource locator(url).  It can be streamed into a buffer where it can be analyzed for information.  Any number of urls can be streamed in.
  • 15.
    09/24/24 B.Ramamurthy 15 UnicastCommunication  When you are interested in a particular remote site you will direct your net connection to that particular site using unicast.  It allows point-to-point method calls between objects using socket-based communication.
  • 16.
    09/24/24 B.Ramamurthy 16 ServerObject Name  Syntax for the server object name is: //host:port/remoteObjectName  Default port number for rmiregistry is 1099  For local host the object name: //localhost/TempServer For a remote host, for example //127.0.0.1/TempServer
  • 17.
    09/24/24 B.Ramamurthy 17 NameBinding  rebind method binds a server’s object name to the object’s name as it is in the registry.  Clients use the name in the registry.  There is also a bind() method.  But rebind is better since it binds the most recently registered object.
  • 18.
    09/24/24 B.Ramamurthy 18 WeatherInfoclass  It is very traditional class for keeping the information about the temperature at a single location.  It has data fields : cityName, temperature, and description and get methods for these.  An array of objects of this class is used in the server implementation.
  • 19.
    09/24/24 B.Ramamurthy 19 TemperatureClient import java.rmi.*; // import other packages  constructor calls a private method getRemoteTemp which takes care of lookup of remote object and access.  In this application it also displays the information.
  • 20.
    09/24/24 B.Ramamurthy 20 TemperatureClient (contd.)  The main method in this client can get the IP address of the remote host as a command line argument.  Command line argument is an array of String of items in the command line after the name of the application.
  • 21.
    09/24/24 B.Ramamurthy 21 ClientDetails  The name of the server object along with the IP of the remote location is used in Naming class’s lookup method to get an object reference.  This object reference is then used for remote method calls.  Observe that there is no difference between the local and remote call.
  • 22.
    09/24/24 B.Ramamurthy 22 WeatherItemclass  Is used in the Graphical display of the weather information.
  • 23.
    09/24/24 B.Ramamurthy 23 Preparingthe Application 1. Compile all the class using javac. 2. Generate the stub and the skeleton: rmic -v1.2 TemperatureServerImpl 3. Then start the registry (this will be running as a daemon) rmiregistry &
  • 24.
    09/24/24 B.Ramamurthy 24 Preparingthe Application 4. Run the server which will register with the RMI registry. Java TemperatureServerImpl & 5. Run the client. Java TemperatureClient & or java TemperatureClient {IPAddress} java TemperatureClient 192.168.0.150
  • 25.
    09/24/24 B.Ramamurthy 25 Summary We discussed the core concepts in implementing a distributed systems using RMI.  Temperature examples shown illustrates all the important RMI features.  The temperature example shown also illustrates how you may access data available in resources identified URLs.
  • 26.
    09/24/24 B.Ramamurthy 26 Chapter16 : Multimedia  We will analyze programs: 16.2, 16.6, 16.7.  HTMLConverter details are given at the end of this chapter.