DISTRIBUTED OBJECTS AND MIDDLEWARE TECHNOLOGIES Flashcards
Briefly describe middleware
• Middleware in this context is a software that provides services
beyond those provided by the operating system to enable the
various components of a distributed system to communicate and
manage data.
• Middleware supports and simplifies complex distributed
applications.
Give examples of middleware technologies
- RPC
- CORBA
- COM
- DCOM
- Java RMI
Briefly describe RMI
• RMI stands for Remote Method Invocation. It is a mechanism
that allows an object residing in one system (JVM) to
access/invoke an object running on another JVM.
• RMI is used to build distributed applications; it provides
remote communication between Java programs.
• It is provided in the package java.rmi.
Illustrate java RMI using a diagram
*see notes for pic
Describe the different parts of the RMI
• Transport Layer − This layer connects the client and the
server. It manages the existing connection and also sets up
new connections.
• Stub − A stub is a representation (proxy) of the remote
object at client. It resides in the client system; it acts as a
gateway for the client program.
• Skeleton − This is the object which resides on the server
side. stub communicates with this skeleton to pass request
to the remote object.
• RRL(Remote Reference Layer) − It is the layer which
manages the references made by the client to the remote
object.
Briefly describe how RMI works
• When the client makes a call to the remote object, it is
received by the stub which eventually passes this request to
the RRL.
• When the client-side RRL receives the request, it invokes a
method called invoke() of the object remoteRef. It passes
the request to the RRL on the server side.
• The RRL on the server side passes the request to the
Skeleton (proxy on the server) which finally invokes the
required object on the server.
• The result is passed all the way back to the client.
Describe a message in the RMI process
• Whenever a client invokes a method that accepts
parameters on a remote object, the parameters are bundled
into a message before being sent over the network.
• These parameters may be of primitive type or objects.
• In case of primitive type, the parameters are put together
and a header is attached to it.
What is marshalling and unmarshalling
• In case the parameters are objects, then they are serialized.
• This process is known as marshalling.
• At the server side, the packed parameters are unbundled
and then the required method is invoked.
• This process is known as unmarshalling.
What is a remote object
A remote object is an object whose method can be invoked
from another JVM.
What are the tasks of the stub
• It initiates a connection with remote Virtual Machine
(JVM),
• It writes and transmits (marshals) the parameters to the
remote Virtual Machine (JVM),
• It waits for the result
• It reads (unmarshals) the return value or exception, and
• It finally, returns the value to the caller.
What are the tasks of the skeleton
- It reads the parameter for the remote method
- It invokes the method on the actual remote object, and
- It writes and transmits (marshals) the result to the caller.
What is the RMI registry
RMI registry is a namespace on which all
server objects are placed.
Each time the server creates an object, it
registers this object (using a unique name
known as bind name.) with the RMIregistry
(using bind() or reBind() methods).
*See notes for pic
What happens when a client seeks to invoke a remote object
• To invoke a remote object, the client needs a
reference of that object.
• At that time, the client fetches the object
from the registry using its bind name (using
lookup() method).
*See notes for pic
What are the requirements for a distributed application
• The application need to locate the remote method
• It need to provide the communication with the
remote objects.
• The application need to load the class definitions for
the objects.
*The RMI application have all these features, so it is called
the distributed application.
What are the steps to writing a java distributed application
- Create the remote interface
- Provide the implementation of the remote interface
- Develop server program
- Develop client program
- Compile application
- Execute the application