SlideShare a Scribd company logo
1 of 21
Download to read offline
UNIT 4 DISTRIBUTED OBJECTS



1) Distributed Object Model

  Remote Object - an object whose methods can be invoked from another
  Virtual Machine.

  Remote Interface - a Java interface that declares the methods of a
  remote object.

  Remote Method Invocation (RMI) - the action of invoking a method of
  a remote interface on a remote object.

2) How Client Server Communicates in Distributed
   Systems OR Roles of Client & Server in
   Distributed Systems

  In the traditional client/server model, the client
   translates the request to an intermediary
     transmission format & sends the request data to the server.The server
     parses the request format,computes the response & formats the
     response for transmission to the client.The client then parses the
     response & displays it to the user.Now you have to design a
     transmission format & you have to write code for conversion between
     your data & the transmission format.Now what we want is a
     mechanism by which the client programmer makes a regular method
     call,the problem is that the object that carries out the work is not
     located in the same virtual machine.The solution is to install a proxy
     for the server object on the client.The client calls the proxy,making a
     regular method call.The client proxy contacts the server.

    similarly the programmer of the server object doesn’t want to fuss
    with the client communication.The solution is to install a second proxy
    object on the server.The server proxy communicates with the client
    proxy & it makes regular method calls to the server objects.
How do proxies communicate with each other ?

a) RMI (Remote Method Invocation) – It supports method calls b/w
distributed java objects.

b) CORBA (Common Object Request Broker Architecture) – It supports
method calls b/w objects of any programming language.It uses the Internet
Inter-ORB protocol, or IIOP, to communicate between objects.

c) SOAP (Simple Object Access Protocol) – It is programming language
neutral.It supports method calls through web services.
  ( draw diagram of this on page no.279 of ur book)

3) Remote Method Invocation (RMI)

   If you have an access to an object on a different machine,
   you can call methods of the remote object.of course, the method
   parameters must somehow be shipped to the other machine,the server
   must be informed to execute the method & the return value must be
   shipped back.

   In RMI, the object whose methods makes the remote call is called the
   client object. The remote object is called the server object.The
   computer running the java code that calls the remote method is the
   client for that call.
   The computer hosting the object that processes the call is the server for
   that call.

   Registration (binding)
     A server can register its remote objects with a naming
     service – the rmiregistry.Once registered, each remote
     object has a unique URL.

 Obtaining a remote object reference.
A client can use the naming service to lookup a URL to obtain a
           remote object reference.
            The application can pass and return remote object references
              as part of its operation.

   (draw diagram of this on page no.281 of ur book)

Stubs & Parameter Marshalling :

 when client code invokes a remote method on a remote object, it
 actually calls an ordinary method on a proxy object called a stub.The stub
 resides on the client machine.The stub packages the parameters used in
 the remote method into a block of bytes. This packaging uses a device
 independent encoding for each parameter.
 The process of encoding the parameters is called parameter
 marshalling.The Purpose of parameter marshalling is to convert the
 parameters into a format suitable for transport from one m/c to another.

 Stub functions include:
 a) Initiating a call to the remote object.
 b) A description of the method to be called.
 c) The marshalled parameters.
 d) Unmarshals the return value or exception from the
    server.

e) Return value to the caller.


Skeleton

 A proxy object on server side is called Skeleton.

Skeleton function includes:

a) It unmarshals the parameters.
b) It locates the object to be called.
c) It calls the desired method.
d) It captures & marshals the return value or
   exception of the call.
e) Returns marshalled data back to the stub.
   ( draw diagram of this on page no.282)

This process is complex, but it is completely automatic & to a large extent
transparent to the programmer.

Dynamic Class Loading

 When u pass a remote object to another program, either as
  a parameter or return value of a remote method, then
 that program must have the class file for that object.

 For ex: consider a method with return type Product.The client program
 needs the class file product.class to compile,but now suppose server
 constructs & return Book object & Book is a subtype of Product.Client
 have no idea where to find the class file Book.class. Therefore a class
 loader that will load required classes from the server is required.RMI uses
 a special RMIClassLoader that loads at runtime the classes required for
 remote invocations.whenever a program loads new code from another
 network location,there is a security issue.For that reason,you need to use
 a security manager in RMI client applications.This is a safety mechanism
 that protects the program from viruses in stub code.For specialized
 applications,programmers can substitute their own class loaders &
 security managers.
RMI Architecture

Client Virtual Machine                 Server Virtual Machine
    Client                                        Remote
                                                  Object


                                       Skeleton
             Stub                                 Server




                         RmiRegistry
                    Registry Virtual Machine
RMI Flow

1. ServerVirtual Machine Object
   Client Creates Remote                Server Virtual Machine
2. Server Registers Remote Object
        Client                                      Remote
                                                    Object

                                                             1
                                        Skeleton
              Stub                                  Server


                                                2

                      RmiRegistry

                     Registry Virtual Machine
RMI Flow

Client Virtual Machine                  Server Virtual Machine
    Client                                          Remote
                    3. Client requests object from Registry
                                                    Object
                    4. Registry returns remote reference
                    (and stub gets created)
                                        Skeleton
             Stub                                  Server

     3               4




                         RmiRegistry

                     Registry Virtual Machine
RMI Flow

     Client Virtual Machine                     Server Virtual Machine
         Client                                              Remote
                                                             Object
                     5                                   7

                                    6
                                                 Skeleton
                   Stub                                       Server

                  5. Client invokes stub method
                  6. Stub talks to skeleton
                  7. Skeleton invokes remote object
                     method “Fred”
                          Registry Virtual Machine


4) Setup for Remote Method Invocation (RMI)


1)   Defining a remote interface.
2)   Implementing the remote interface.
3)   Write the server program to create server objects.
4)   Write the client program that uses the remote object.
5)   Generating stubs & skeletons.
6)   Starting the registry & registering the objects
7)   Running the server & client.


     1. Define the Remote Interface –
     Your client program needs to manipulate server objects,but it doesnot
     actually have copies of all of them.
The objects themselves reside on the server.The client code must still
  know what it can do with those objects.Their capabilities are expressed
  in an interface that is shared between the client & server & so resides
  simulateneously on both machines.

  To define the remote service, we write a remote interface.All interfaces
  for remote objects must extend Remote interface defined in java.rmi
  package.
  All methods in those interfaces may throw a RemoteException.Such
  exceptions are thrown during a remote method call if there is a network
  problem

      import java.rmi.*;
    public interface Hello extends Remote
   {
       public String sayHello() throws RemoteException;
    }


2. Implementing the Remote Interface

  On the server side,you must implement the class that
   actually carries out the methods advertised in the remote
   interface.Declare the remote interface being implemented.
   You can tell that the class is a server for remote methods because it
   extends UnicastRemoteObject,which is a concrete java class that makes
   objects remotely accessible. A UnicastRemoteObject object resides on a
   server.This is the class that we extend for all the server classes.Define a
   constructor for the remote object.
   Give an implementation for each method on the remote interface.By
   convention, the name of a class implementing an interface refers to the
   name of the interface and is ended by Impl.

   import java.rmi.*;
  import java.rmi.server.*;
  public class HelloImpl extends UnicastRemoteObject
  implements Hello
{
         public HelloImpl() throws RemoteException
 {
         super();
 }
     public String sayHello() throws RemoteException
 {
     return "Hello! How r u? ";
 }
}


3. Server Program


import java.rmi.*;
import java.rmi.server.*;
public class HelloServer
{
  public static void main(String args[])
  {
    try
    {
      Hello h=new HelloImpl();
      Naming.rebind("server",h);
      System.out.println("object is registered");
      System.out.println("now server is waiting");
      }
      catch(Exception e)
      {
      System.out.println("error:"+e);
      }
      }

         }

Locating Server Objects
To access a remote object that exists on the server,the client needs a
   local stub object.Then how can a client request such a stub? The most
   common method is to call a remote method of another server object &
   get a stub object as a return value.
   A server programs registers objects with the bootstrap registry service &
   the client retrieves stubs to those objects.You register a server object by
   giving the bootstrap registry service a reference to the object & a name.
   RMI URLs start with rmi:// & are followed by a server, an optional port
   number, another slash, & the name of the remote object. Eg:
   rmi://localhost:99:port/central_warehouse

   For security reasons,an application can bind,unbind or rebind registry
   object refrences only if it runs on the same host as the registry.
   Registry used for client bootstraping to get the initial reference.

   java.rmi.Naming
     a) registry access
     b) URL format       : prot://host:port/name
     c) default protocol : rmi
     d) default host       : localhost
     e) default port       : 1099
     f) all static methods:
                 void bind(String name, Remote obj);
                 void rebind(String name, Remote obj);
                 void unbind(String name); // unbinds the name
                 Remote lookup(String url); // returns a stub



4. Client program

import java.rmi.*;
public class HelloClient
{
public static void main(String args[])
{
try
{
Hello h=(Hello)Naming.lookup("rmi://localhost/server");
System.out.println("client: Hello!");
System.out.println("server:" +h.sayHello());
}
catch(Exception e)
{
System.out.println("Error:"+e);
}
}
}

5. Registering the Object


import java.rmi.*;
import java.rmi.server.* ;
import javax.naming.*;
 public class ShowBindings {
  public static void main (String args[]) {
  try {
   Context namingContext=new InitialContext();
   NamingEnumeration e = namingContext.list(“rmi:”);
   while(e.hasMore())
    System.out.println(e.next.getName());
}
catch(Exception e) {
      e.printStackTrace();
  }
 }
}

Then follow these steps:

   1) Compile the source files for the
     interface, implementation, client & server classes.
2) run rmic on the implementation class
   3) Start the rmi registry as:
       Start rmiregistry
   4) start the server.
   5) Run the client.



 (draw diagram of this on page no.293)



5) Parameter Passing in Remote Methods

There are two ways of passing parameters in remote methods:

1) Passing Non remote Methods -

   When a remote object is passed from the server to the client, the client
   receives a stub. Using the stub, it can manipulate the server object by
   invoking remote methods. The object, however stays on the server. It is
   also possible to pass & return any objects with a remote method call,
   not just those that implements the Remote interface. The client gets a
   copy of the string. Then, after the call, the client has its own string
   object to work with.
   This means that there is no need for any further connection to any
   object on the server to deal with that string.
   Whenever an object that is not a remote object needs to be transported
   from one Java virtual machine to another, the Java virtual machine
   makes a copy & sends the copy across the network connection. This
   technique is very different from parameter passing in a local method.
   When u pass objects into a local method or return them as method
   results, only object references are passed. However, object references
   are memory addresses of objects in the local java virtual machine. This
   information is meaningless to a different java virtual machine. The RMI
   mechanism can also make copies of more complex objects, provided
they are serializable.RMI uses the serialization mechanism to send
  objects across a network. This means that only the information in any
  classes that implement the serializable.
  Eg: An object of type customer is then sent to the server.
  Because customer is not a remote object, a copy of the object is made
  on the server. The server program sends back an array list of products.
  The array list contains those products that match the customer profile &
  it always contains that one item namely, a copy of the book core java.
  Again ArrayList is not a remote class, so the array list is copied from the
  server back to its client.

2) Passing Remote Objects –

  In remote passing objects, the client receives a stub object, then saves it
  in an object variable with the same type as the remote interface. The
  client can now access the actual object on the server through the
  variable. The client can copy this variable in its own local machine – all
  those copies are simply references to the same stub. Only remote
  interfaces can be accessed through the stub. A remote interface is any
  interface extending Remote. All local methods are inaccessible through
  the stub. A local method is any method that is not defined in a remote
  interface. Local methods can run only on the virtual machine containing
  the actual object.
  Stubs are generated only from classes that implement a remote
  interface & only the methods specified in the interfaces are provided in
  the stub classes. If a subclass doesn’t implement a remote interface but
  a superclass does, & an object of the subclass is passed to a remote
  method, only the superclass methods are accessible. A remote class can
  implement multiple interfaces. For Eg:

  interface StockUnit extends Remote
  {
   public String getStockCode() throws RemoteException;
  }


  Class BookImpl extends ProductImpl implements StockUnit
{
   public BookImpl(String title, String theISBN, int age1, int age2, String
   hobby) throws RemoteException
   {
      super(title + “Book” , age1, age2, hobby) ;
      ISBN =theISBN;
    }

   public String getStockCode() throws RemoteException
  {
      Return ISBN;
    }

       private String ISBN ;
   }

Now when a book object is passed to a remote method, the recipient
obtains a stub that has access to the remote methods in both the Product &
the StockUnit class.

Cloning Remote Objects –

 Stubs do not have a clone method, so you cannot clone a remote object
 by invoking clone on the stub. The reason is:
 If clone were to make a remote call to tell the server to clone the
 implementation object, then the clone method would need to throw a
 RemoteException.

6) Server Object Activation

   We used a server program to instantiate & register objects so that the
   clients could make remote calls on them. However in some cases, it may
   be wasteful to instantiate lots of server objects & have them wait for
   connections, whether or not client objects use them. The activation
   mechanism lets you delay the object construction so that a server object
   is only constructed when atleast one client invokes a remote method on
   it.
To take advantage of activation, the client code is completely
   unchanged. The client simply requests a remote reference & make calls
   through it.
   However the server program is replaced by an activation program that
   constructs activation descriptors of the objects that are to be
   constructed at a later time, 7 binds receivers for remote method calls
   with the naming service. When a call is made for the first time, the
   information in the activation descriptor is used to construct the object.
   A server object that is used in this way should extend the Activable class
   & implement one or more remote interfaces. For ex:

   Class ProductImpl extends Activable implements Product
    {
       ……………

   }
You must provide a constructor that takes two parameters:

 a) An activation ID
 b) A single object containing all construction information wrapped in a
    MarshallObject.

When you place a serialized (or marshalled) copy of the construction
information inside the activation descriptor. Your server object constructor
should use the get method of the MarshalledObject class to deserialize the
construction information.

To construct the activation descriptors, you need the following:
 a) The activation group ID for the virtual machine
   which the object should be constructed.

b) The name of the class
c) The URL string from which to load the class files.
d) The marshalled construction information.

 Pass the descriptor to the static Activable.register method.
It returns an object of some class that implements the
 remote interfaces of the implementation class.You can
 bind that object with the naming service:

  Product p = (Product) Activable.register(desc);
  namingContext.bind(“toaster”, p) ;

The activation program exits after registerin & binding the activation
receivers. The server objects are constructed only when the first remote
method call occurs.

7) CORBA

   CORBA lets u make calls between objects written in any language.
   CORBA is an industry standard for distributed object computing,
   developed by Object Management Group (OMG).
   CORBA depends on having an ORB(Object Request Broker) available on
   both client & server. ORB act as a kind of universal translator for
   interobject CORBA communication.
   It Provides a set of common services eg: create, copy, move or destroy
   objects, to a “naming service” that allows you to search for objects if
   you know their name.

How CORBA differ from RMI:

   RMI is Java-only.
   RMI is not an industry standard (it is a product of Sun).
   RMI does not provide such a rich set of services.
   RMI is simpler to use and integrates smoothly with Java.

Steps for Implementing CORBA objects

1) Write the Interface that’ specifies how the object works,
   using IDL, the interface definition language for defining
   CORBA interfaces. IDL is a special language to specify
   interfaces in a language neutral form.
2) Using the IDL complier for the target language(s),
   generate the needed stub & helper classes.

3) Add the implementation code for the server objects,
   using the language of your choice. Compile the
   implementation code.

4) Write a server program that creates & registers the
   server objects.The most convenient method for
    registration is to use the CORBA naming service, a      service that is
   similar to rmiregistry.

5) Write a client program that locates the server objects
   invokes services on them.

6) Start server program on server & client program on
    client.

  A CORBA Example –

    1) first you initialize the ORB.The ORB is a code library that knows
       how to talk to other ORB’s & how to marshal & unmarshal
       parameters.

             ORB orb = ORB.init(args , null) ;
    2) Next , you locate the naming service that helps you
        locate other objects.However in CORBA, the
        naming service is just another CORBA object.To
        call the naming service, you first need to locate
         it.The call
            String [] services = orb.list_initial_services();
      lists the name of the standard services to which the
      ORB can connect.

    3) To obtain an object reference to the service, you use
       the resolve_initial_references method.It returns a
       generic CORBA object, an instance of the class org.
corba.Object.

    org.omg.CORBA.Object
       object=orb.resolve_initial_references(“NameService”);

    4) Convert this reference to a NamingContext reference so that you
       can invoke the methods of the NamingContext interface.

    NamingContext
    namingcontext=NamingContextHelper.narrow(object);

    5) Now you have the naming context, you can use it to
    locate the object that the server placed into it.The naming context
    associates names with server objects.

    6) A name component consists of an ID & a kind.The
       ID is a name for the component & Kind is some indication of the
       type of the component.


IDL (Interface Definition Language)

   IDL specifies interfaces b/w CORBA objects.
   CORBA is language independent, bcoz interfaces described in IDL can be
   mapped to any programming language.
   A client written in c++ can communicate with server written in java.

   IDL syntax is :
    interface Product {
       string getDescription();
    };

   Differences b/w IDL & java :

   a) The interface definition ends with a semicolon.
   b) string is written in lower case.
   c) In CORBA, the string contain only 8 bit characters,
whereas in java programming language, string
      contains 16 bit Unicode characters.



 IDL compiler generates a number of other source files – the stub class for
communicating with the ORB & three helper classes.

   IDL compiler generates a class with suffix Holder for every interface. for
   ex: when a Product interface is compiled, it automatically generates a
   ProductHolder class.
   In IDL you can use sequence construct to define an arrays of variable
   size.u must define a type before u can declare sequence parameters. Ex:
   interface Warehouse {
        ProductSeq find(Customer c);
     };


   IDL can contain constants also. Ex:
   interface Warehouse {
     const int SOLD_OUT =404;
  };

In IDL, u can group definitions of interfaces,types,exceptions & constants
into modules. Ex:
   module corejava {
   interface Product {
    ……
   };
interface Warehouse {
   …………
};
};

    8) Remote Method Calls with SOAP (Simple Object
     Access Protocol)
SOAP is an XML protocol, like CORBA’s IIOP ,that provides a protocol for
   invoking remote methods.
   In recent years, web services have emerged as a popular technology for
   remote method calls.

   A web service has two components:
    a) A server can be accessed with SOAP transport
       protocol.
      b) A description of the service in the Web
         Description Language (WSDL) format.

   A primary attraction of web services is that they are language neutral.


   WSDL:
   WSDL is analogous to IDL.It describes the interface of the web service,
   the methods that can be called & their parameter & return types.
   The WSDL descriptor describes the services in a language independent
   manner.For Ex: the WSDL for the Amazon web services (located at
   http://soap.amazon.com/schemas3/AmazonWebServices.wsdl)
   describes an AuthorSearchRequest operation.


To make web services easy to understand, we look at an example :

The Amazon web service allows a programmer to interact with the Amazon
system for a wide variety of purposes.For ex: you can get listings of all
books with a given author or title, or you can fill shopping carts & place
orders.Amazon makes this service available for use by companies that want
to sell items to their customers, using the Amazon systems as a fulfillment
backend.

     (draw diagram on page no 337)

More Related Content

What's hot

Clock synchronization in distributed system
Clock synchronization in distributed systemClock synchronization in distributed system
Clock synchronization in distributed systemSunita Sahu
 
Distributed file system
Distributed file systemDistributed file system
Distributed file systemAnamika Singh
 
RPC: Remote procedure call
RPC: Remote procedure callRPC: Remote procedure call
RPC: Remote procedure callSunita Sahu
 
Distributed document based system
Distributed document based systemDistributed document based system
Distributed document based systemChetan Selukar
 
object oriented methodologies
object oriented methodologiesobject oriented methodologies
object oriented methodologiesAmith Tiwari
 
Client-centric Consistency Models
Client-centric Consistency ModelsClient-centric Consistency Models
Client-centric Consistency ModelsEnsar Basri Kahveci
 
Object oriented database concepts
Object oriented database conceptsObject oriented database concepts
Object oriented database conceptsTemesgenthanks
 
Distributed shred memory architecture
Distributed shred memory architectureDistributed shred memory architecture
Distributed shred memory architectureMaulik Togadiya
 
Server system architecture
Server system architectureServer system architecture
Server system architectureFaiza Hafeez
 
Mac protocols of adhoc network
Mac protocols of adhoc networkMac protocols of adhoc network
Mac protocols of adhoc networkshashi712
 
Consistency protocols
Consistency protocolsConsistency protocols
Consistency protocolsZongYing Lyu
 
Distributed File Systems
Distributed File Systems Distributed File Systems
Distributed File Systems Maurvi04
 
Agreement Protocols, distributed File Systems, Distributed Shared Memory
Agreement Protocols, distributed File Systems, Distributed Shared MemoryAgreement Protocols, distributed File Systems, Distributed Shared Memory
Agreement Protocols, distributed File Systems, Distributed Shared MemorySHIKHA GAUTAM
 
CS8791 Cloud Computing - Question Bank
CS8791 Cloud Computing - Question BankCS8791 Cloud Computing - Question Bank
CS8791 Cloud Computing - Question Bankpkaviya
 
Fault tolerance in distributed systems
Fault tolerance in distributed systemsFault tolerance in distributed systems
Fault tolerance in distributed systemssumitjain2013
 

What's hot (20)

Clock synchronization in distributed system
Clock synchronization in distributed systemClock synchronization in distributed system
Clock synchronization in distributed system
 
Distributed DBMS - Unit 6 - Query Processing
Distributed DBMS - Unit 6 - Query ProcessingDistributed DBMS - Unit 6 - Query Processing
Distributed DBMS - Unit 6 - Query Processing
 
Distributed file system
Distributed file systemDistributed file system
Distributed file system
 
RPC: Remote procedure call
RPC: Remote procedure callRPC: Remote procedure call
RPC: Remote procedure call
 
Distributed document based system
Distributed document based systemDistributed document based system
Distributed document based system
 
Middleware
MiddlewareMiddleware
Middleware
 
object oriented methodologies
object oriented methodologiesobject oriented methodologies
object oriented methodologies
 
Distributed Systems Naming
Distributed Systems NamingDistributed Systems Naming
Distributed Systems Naming
 
Client-centric Consistency Models
Client-centric Consistency ModelsClient-centric Consistency Models
Client-centric Consistency Models
 
Ddbms1
Ddbms1Ddbms1
Ddbms1
 
Object oriented database concepts
Object oriented database conceptsObject oriented database concepts
Object oriented database concepts
 
Distributed shred memory architecture
Distributed shred memory architectureDistributed shred memory architecture
Distributed shred memory architecture
 
Server system architecture
Server system architectureServer system architecture
Server system architecture
 
Mac protocols of adhoc network
Mac protocols of adhoc networkMac protocols of adhoc network
Mac protocols of adhoc network
 
Consistency protocols
Consistency protocolsConsistency protocols
Consistency protocols
 
Distributed File Systems
Distributed File Systems Distributed File Systems
Distributed File Systems
 
Agreement Protocols, distributed File Systems, Distributed Shared Memory
Agreement Protocols, distributed File Systems, Distributed Shared MemoryAgreement Protocols, distributed File Systems, Distributed Shared Memory
Agreement Protocols, distributed File Systems, Distributed Shared Memory
 
Stream oriented communication
Stream oriented communicationStream oriented communication
Stream oriented communication
 
CS8791 Cloud Computing - Question Bank
CS8791 Cloud Computing - Question BankCS8791 Cloud Computing - Question Bank
CS8791 Cloud Computing - Question Bank
 
Fault tolerance in distributed systems
Fault tolerance in distributed systemsFault tolerance in distributed systems
Fault tolerance in distributed systems
 

Similar to Distributed objects

Similar to Distributed objects (20)

RMI (Remote Method Invocation)
RMI (Remote Method Invocation)RMI (Remote Method Invocation)
RMI (Remote Method Invocation)
 
Rmi
RmiRmi
Rmi
 
Rmi ppt-2003
Rmi ppt-2003Rmi ppt-2003
Rmi ppt-2003
 
Remote Method Invocation in JAVA
Remote Method Invocation in JAVARemote Method Invocation in JAVA
Remote Method Invocation in JAVA
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocation
 
Java RMI
Java RMIJava RMI
Java RMI
 
Module 3 remote method invocation-2
Module 3   remote method  invocation-2Module 3   remote method  invocation-2
Module 3 remote method invocation-2
 
Rmi
RmiRmi
Rmi
 
Rmi
RmiRmi
Rmi
 
Remote method invocatiom
Remote method invocatiomRemote method invocatiom
Remote method invocatiom
 
Remote method invocation
Remote method invocationRemote method invocation
Remote method invocation
 
Remote method invocation
Remote method invocationRemote method invocation
Remote method invocation
 
Remote Method Invocation
Remote Method InvocationRemote Method Invocation
Remote Method Invocation
 
Rmi ppt
Rmi pptRmi ppt
Rmi ppt
 
DS
DSDS
DS
 
Remote Method Invocation (Java RMI)
Remote Method Invocation (Java RMI)Remote Method Invocation (Java RMI)
Remote Method Invocation (Java RMI)
 
remote method invocation
remote method invocationremote method invocation
remote method invocation
 
Java rmi tutorial
Java rmi tutorialJava rmi tutorial
Java rmi tutorial
 
Remote Method Invocation, Advanced programming
Remote Method Invocation, Advanced programmingRemote Method Invocation, Advanced programming
Remote Method Invocation, Advanced programming
 
Java rmi
Java rmiJava rmi
Java rmi
 

Recently uploaded

ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Projectjordimapav
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvRicaMaeCastro1
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxkarenfajardo43
 
Oppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmOppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmStan Meyer
 
4.9.24 Social Capital and Social Exclusion.pptx
4.9.24 Social Capital and Social Exclusion.pptx4.9.24 Social Capital and Social Exclusion.pptx
4.9.24 Social Capital and Social Exclusion.pptxmary850239
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6Vanessa Camilleri
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptxmary850239
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDhatriParmar
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...Nguyen Thanh Tu Collection
 
Objectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxObjectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxMadhavi Dharankar
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQuiz Club NITW
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...Nguyen Thanh Tu Collection
 
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQ-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQuiz Club NITW
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...Nguyen Thanh Tu Collection
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Association for Project Management
 
An Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPAn Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPCeline George
 
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxBIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxSayali Powar
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 

Recently uploaded (20)

ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Project
 
Chi-Square Test Non Parametric Test Categorical Variable
Chi-Square Test Non Parametric Test Categorical VariableChi-Square Test Non Parametric Test Categorical Variable
Chi-Square Test Non Parametric Test Categorical Variable
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
 
Oppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and FilmOppenheimer Film Discussion for Philosophy and Film
Oppenheimer Film Discussion for Philosophy and Film
 
4.9.24 Social Capital and Social Exclusion.pptx
4.9.24 Social Capital and Social Exclusion.pptx4.9.24 Social Capital and Social Exclusion.pptx
4.9.24 Social Capital and Social Exclusion.pptx
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx
 
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptxDecoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
Decoding the Tweet _ Practical Criticism in the Age of Hashtag.pptx
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 - I-LEARN SMART WORLD - CẢ NĂM - CÓ FILE NGHE (BẢN...
 
Objectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptxObjectives n learning outcoms - MD 20240404.pptx
Objectives n learning outcoms - MD 20240404.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
 
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQ-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
 
An Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERPAn Overview of the Calendar App in Odoo 17 ERP
An Overview of the Calendar App in Odoo 17 ERP
 
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxBIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 

Distributed objects

  • 1. UNIT 4 DISTRIBUTED OBJECTS 1) Distributed Object Model Remote Object - an object whose methods can be invoked from another Virtual Machine. Remote Interface - a Java interface that declares the methods of a remote object. Remote Method Invocation (RMI) - the action of invoking a method of a remote interface on a remote object. 2) How Client Server Communicates in Distributed Systems OR Roles of Client & Server in Distributed Systems In the traditional client/server model, the client translates the request to an intermediary transmission format & sends the request data to the server.The server parses the request format,computes the response & formats the response for transmission to the client.The client then parses the response & displays it to the user.Now you have to design a transmission format & you have to write code for conversion between your data & the transmission format.Now what we want is a mechanism by which the client programmer makes a regular method call,the problem is that the object that carries out the work is not located in the same virtual machine.The solution is to install a proxy for the server object on the client.The client calls the proxy,making a regular method call.The client proxy contacts the server. similarly the programmer of the server object doesn’t want to fuss with the client communication.The solution is to install a second proxy object on the server.The server proxy communicates with the client proxy & it makes regular method calls to the server objects.
  • 2. How do proxies communicate with each other ? a) RMI (Remote Method Invocation) – It supports method calls b/w distributed java objects. b) CORBA (Common Object Request Broker Architecture) – It supports method calls b/w objects of any programming language.It uses the Internet Inter-ORB protocol, or IIOP, to communicate between objects. c) SOAP (Simple Object Access Protocol) – It is programming language neutral.It supports method calls through web services. ( draw diagram of this on page no.279 of ur book) 3) Remote Method Invocation (RMI) If you have an access to an object on a different machine, you can call methods of the remote object.of course, the method parameters must somehow be shipped to the other machine,the server must be informed to execute the method & the return value must be shipped back. In RMI, the object whose methods makes the remote call is called the client object. The remote object is called the server object.The computer running the java code that calls the remote method is the client for that call. The computer hosting the object that processes the call is the server for that call. Registration (binding) A server can register its remote objects with a naming service – the rmiregistry.Once registered, each remote object has a unique URL. Obtaining a remote object reference.
  • 3. A client can use the naming service to lookup a URL to obtain a remote object reference.  The application can pass and return remote object references as part of its operation. (draw diagram of this on page no.281 of ur book) Stubs & Parameter Marshalling : when client code invokes a remote method on a remote object, it actually calls an ordinary method on a proxy object called a stub.The stub resides on the client machine.The stub packages the parameters used in the remote method into a block of bytes. This packaging uses a device independent encoding for each parameter. The process of encoding the parameters is called parameter marshalling.The Purpose of parameter marshalling is to convert the parameters into a format suitable for transport from one m/c to another. Stub functions include: a) Initiating a call to the remote object. b) A description of the method to be called. c) The marshalled parameters. d) Unmarshals the return value or exception from the server. e) Return value to the caller. Skeleton A proxy object on server side is called Skeleton. Skeleton function includes: a) It unmarshals the parameters. b) It locates the object to be called. c) It calls the desired method.
  • 4. d) It captures & marshals the return value or exception of the call. e) Returns marshalled data back to the stub. ( draw diagram of this on page no.282) This process is complex, but it is completely automatic & to a large extent transparent to the programmer. Dynamic Class Loading When u pass a remote object to another program, either as a parameter or return value of a remote method, then that program must have the class file for that object. For ex: consider a method with return type Product.The client program needs the class file product.class to compile,but now suppose server constructs & return Book object & Book is a subtype of Product.Client have no idea where to find the class file Book.class. Therefore a class loader that will load required classes from the server is required.RMI uses a special RMIClassLoader that loads at runtime the classes required for remote invocations.whenever a program loads new code from another network location,there is a security issue.For that reason,you need to use a security manager in RMI client applications.This is a safety mechanism that protects the program from viruses in stub code.For specialized applications,programmers can substitute their own class loaders & security managers.
  • 5. RMI Architecture Client Virtual Machine Server Virtual Machine Client Remote Object Skeleton Stub Server RmiRegistry Registry Virtual Machine
  • 6. RMI Flow 1. ServerVirtual Machine Object Client Creates Remote Server Virtual Machine 2. Server Registers Remote Object Client Remote Object 1 Skeleton Stub Server 2 RmiRegistry Registry Virtual Machine
  • 7. RMI Flow Client Virtual Machine Server Virtual Machine Client Remote 3. Client requests object from Registry Object 4. Registry returns remote reference (and stub gets created) Skeleton Stub Server 3 4 RmiRegistry Registry Virtual Machine
  • 8. RMI Flow Client Virtual Machine Server Virtual Machine Client Remote Object 5 7 6 Skeleton Stub Server 5. Client invokes stub method 6. Stub talks to skeleton 7. Skeleton invokes remote object method “Fred” Registry Virtual Machine 4) Setup for Remote Method Invocation (RMI) 1) Defining a remote interface. 2) Implementing the remote interface. 3) Write the server program to create server objects. 4) Write the client program that uses the remote object. 5) Generating stubs & skeletons. 6) Starting the registry & registering the objects 7) Running the server & client. 1. Define the Remote Interface – Your client program needs to manipulate server objects,but it doesnot actually have copies of all of them.
  • 9. The objects themselves reside on the server.The client code must still know what it can do with those objects.Their capabilities are expressed in an interface that is shared between the client & server & so resides simulateneously on both machines. To define the remote service, we write a remote interface.All interfaces for remote objects must extend Remote interface defined in java.rmi package. All methods in those interfaces may throw a RemoteException.Such exceptions are thrown during a remote method call if there is a network problem import java.rmi.*; public interface Hello extends Remote { public String sayHello() throws RemoteException; } 2. Implementing the Remote Interface On the server side,you must implement the class that actually carries out the methods advertised in the remote interface.Declare the remote interface being implemented. You can tell that the class is a server for remote methods because it extends UnicastRemoteObject,which is a concrete java class that makes objects remotely accessible. A UnicastRemoteObject object resides on a server.This is the class that we extend for all the server classes.Define a constructor for the remote object. Give an implementation for each method on the remote interface.By convention, the name of a class implementing an interface refers to the name of the interface and is ended by Impl. import java.rmi.*; import java.rmi.server.*; public class HelloImpl extends UnicastRemoteObject implements Hello
  • 10. { public HelloImpl() throws RemoteException { super(); } public String sayHello() throws RemoteException { return "Hello! How r u? "; } } 3. Server Program import java.rmi.*; import java.rmi.server.*; public class HelloServer { public static void main(String args[]) { try { Hello h=new HelloImpl(); Naming.rebind("server",h); System.out.println("object is registered"); System.out.println("now server is waiting"); } catch(Exception e) { System.out.println("error:"+e); } } } Locating Server Objects
  • 11. To access a remote object that exists on the server,the client needs a local stub object.Then how can a client request such a stub? The most common method is to call a remote method of another server object & get a stub object as a return value. A server programs registers objects with the bootstrap registry service & the client retrieves stubs to those objects.You register a server object by giving the bootstrap registry service a reference to the object & a name. RMI URLs start with rmi:// & are followed by a server, an optional port number, another slash, & the name of the remote object. Eg: rmi://localhost:99:port/central_warehouse For security reasons,an application can bind,unbind or rebind registry object refrences only if it runs on the same host as the registry. Registry used for client bootstraping to get the initial reference. java.rmi.Naming a) registry access b) URL format : prot://host:port/name c) default protocol : rmi d) default host : localhost e) default port : 1099 f) all static methods: void bind(String name, Remote obj); void rebind(String name, Remote obj); void unbind(String name); // unbinds the name Remote lookup(String url); // returns a stub 4. Client program import java.rmi.*; public class HelloClient { public static void main(String args[]) {
  • 12. try { Hello h=(Hello)Naming.lookup("rmi://localhost/server"); System.out.println("client: Hello!"); System.out.println("server:" +h.sayHello()); } catch(Exception e) { System.out.println("Error:"+e); } } } 5. Registering the Object import java.rmi.*; import java.rmi.server.* ; import javax.naming.*; public class ShowBindings { public static void main (String args[]) { try { Context namingContext=new InitialContext(); NamingEnumeration e = namingContext.list(“rmi:”); while(e.hasMore()) System.out.println(e.next.getName()); } catch(Exception e) { e.printStackTrace(); } } } Then follow these steps: 1) Compile the source files for the interface, implementation, client & server classes.
  • 13. 2) run rmic on the implementation class 3) Start the rmi registry as: Start rmiregistry 4) start the server. 5) Run the client. (draw diagram of this on page no.293) 5) Parameter Passing in Remote Methods There are two ways of passing parameters in remote methods: 1) Passing Non remote Methods - When a remote object is passed from the server to the client, the client receives a stub. Using the stub, it can manipulate the server object by invoking remote methods. The object, however stays on the server. It is also possible to pass & return any objects with a remote method call, not just those that implements the Remote interface. The client gets a copy of the string. Then, after the call, the client has its own string object to work with. This means that there is no need for any further connection to any object on the server to deal with that string. Whenever an object that is not a remote object needs to be transported from one Java virtual machine to another, the Java virtual machine makes a copy & sends the copy across the network connection. This technique is very different from parameter passing in a local method. When u pass objects into a local method or return them as method results, only object references are passed. However, object references are memory addresses of objects in the local java virtual machine. This information is meaningless to a different java virtual machine. The RMI mechanism can also make copies of more complex objects, provided
  • 14. they are serializable.RMI uses the serialization mechanism to send objects across a network. This means that only the information in any classes that implement the serializable. Eg: An object of type customer is then sent to the server. Because customer is not a remote object, a copy of the object is made on the server. The server program sends back an array list of products. The array list contains those products that match the customer profile & it always contains that one item namely, a copy of the book core java. Again ArrayList is not a remote class, so the array list is copied from the server back to its client. 2) Passing Remote Objects – In remote passing objects, the client receives a stub object, then saves it in an object variable with the same type as the remote interface. The client can now access the actual object on the server through the variable. The client can copy this variable in its own local machine – all those copies are simply references to the same stub. Only remote interfaces can be accessed through the stub. A remote interface is any interface extending Remote. All local methods are inaccessible through the stub. A local method is any method that is not defined in a remote interface. Local methods can run only on the virtual machine containing the actual object. Stubs are generated only from classes that implement a remote interface & only the methods specified in the interfaces are provided in the stub classes. If a subclass doesn’t implement a remote interface but a superclass does, & an object of the subclass is passed to a remote method, only the superclass methods are accessible. A remote class can implement multiple interfaces. For Eg: interface StockUnit extends Remote { public String getStockCode() throws RemoteException; } Class BookImpl extends ProductImpl implements StockUnit
  • 15. { public BookImpl(String title, String theISBN, int age1, int age2, String hobby) throws RemoteException { super(title + “Book” , age1, age2, hobby) ; ISBN =theISBN; } public String getStockCode() throws RemoteException { Return ISBN; } private String ISBN ; } Now when a book object is passed to a remote method, the recipient obtains a stub that has access to the remote methods in both the Product & the StockUnit class. Cloning Remote Objects – Stubs do not have a clone method, so you cannot clone a remote object by invoking clone on the stub. The reason is: If clone were to make a remote call to tell the server to clone the implementation object, then the clone method would need to throw a RemoteException. 6) Server Object Activation We used a server program to instantiate & register objects so that the clients could make remote calls on them. However in some cases, it may be wasteful to instantiate lots of server objects & have them wait for connections, whether or not client objects use them. The activation mechanism lets you delay the object construction so that a server object is only constructed when atleast one client invokes a remote method on it.
  • 16. To take advantage of activation, the client code is completely unchanged. The client simply requests a remote reference & make calls through it. However the server program is replaced by an activation program that constructs activation descriptors of the objects that are to be constructed at a later time, 7 binds receivers for remote method calls with the naming service. When a call is made for the first time, the information in the activation descriptor is used to construct the object. A server object that is used in this way should extend the Activable class & implement one or more remote interfaces. For ex: Class ProductImpl extends Activable implements Product { …………… } You must provide a constructor that takes two parameters: a) An activation ID b) A single object containing all construction information wrapped in a MarshallObject. When you place a serialized (or marshalled) copy of the construction information inside the activation descriptor. Your server object constructor should use the get method of the MarshalledObject class to deserialize the construction information. To construct the activation descriptors, you need the following: a) The activation group ID for the virtual machine which the object should be constructed. b) The name of the class c) The URL string from which to load the class files. d) The marshalled construction information. Pass the descriptor to the static Activable.register method.
  • 17. It returns an object of some class that implements the remote interfaces of the implementation class.You can bind that object with the naming service: Product p = (Product) Activable.register(desc); namingContext.bind(“toaster”, p) ; The activation program exits after registerin & binding the activation receivers. The server objects are constructed only when the first remote method call occurs. 7) CORBA CORBA lets u make calls between objects written in any language. CORBA is an industry standard for distributed object computing, developed by Object Management Group (OMG). CORBA depends on having an ORB(Object Request Broker) available on both client & server. ORB act as a kind of universal translator for interobject CORBA communication. It Provides a set of common services eg: create, copy, move or destroy objects, to a “naming service” that allows you to search for objects if you know their name. How CORBA differ from RMI: RMI is Java-only. RMI is not an industry standard (it is a product of Sun). RMI does not provide such a rich set of services. RMI is simpler to use and integrates smoothly with Java. Steps for Implementing CORBA objects 1) Write the Interface that’ specifies how the object works, using IDL, the interface definition language for defining CORBA interfaces. IDL is a special language to specify interfaces in a language neutral form.
  • 18. 2) Using the IDL complier for the target language(s), generate the needed stub & helper classes. 3) Add the implementation code for the server objects, using the language of your choice. Compile the implementation code. 4) Write a server program that creates & registers the server objects.The most convenient method for registration is to use the CORBA naming service, a service that is similar to rmiregistry. 5) Write a client program that locates the server objects invokes services on them. 6) Start server program on server & client program on client. A CORBA Example – 1) first you initialize the ORB.The ORB is a code library that knows how to talk to other ORB’s & how to marshal & unmarshal parameters. ORB orb = ORB.init(args , null) ; 2) Next , you locate the naming service that helps you locate other objects.However in CORBA, the naming service is just another CORBA object.To call the naming service, you first need to locate it.The call String [] services = orb.list_initial_services(); lists the name of the standard services to which the ORB can connect. 3) To obtain an object reference to the service, you use the resolve_initial_references method.It returns a generic CORBA object, an instance of the class org.
  • 19. corba.Object. org.omg.CORBA.Object object=orb.resolve_initial_references(“NameService”); 4) Convert this reference to a NamingContext reference so that you can invoke the methods of the NamingContext interface. NamingContext namingcontext=NamingContextHelper.narrow(object); 5) Now you have the naming context, you can use it to locate the object that the server placed into it.The naming context associates names with server objects. 6) A name component consists of an ID & a kind.The ID is a name for the component & Kind is some indication of the type of the component. IDL (Interface Definition Language) IDL specifies interfaces b/w CORBA objects. CORBA is language independent, bcoz interfaces described in IDL can be mapped to any programming language. A client written in c++ can communicate with server written in java. IDL syntax is : interface Product { string getDescription(); }; Differences b/w IDL & java : a) The interface definition ends with a semicolon. b) string is written in lower case. c) In CORBA, the string contain only 8 bit characters,
  • 20. whereas in java programming language, string contains 16 bit Unicode characters. IDL compiler generates a number of other source files – the stub class for communicating with the ORB & three helper classes. IDL compiler generates a class with suffix Holder for every interface. for ex: when a Product interface is compiled, it automatically generates a ProductHolder class. In IDL you can use sequence construct to define an arrays of variable size.u must define a type before u can declare sequence parameters. Ex: interface Warehouse { ProductSeq find(Customer c); }; IDL can contain constants also. Ex: interface Warehouse { const int SOLD_OUT =404; }; In IDL, u can group definitions of interfaces,types,exceptions & constants into modules. Ex: module corejava { interface Product { …… }; interface Warehouse { ………… }; }; 8) Remote Method Calls with SOAP (Simple Object Access Protocol)
  • 21. SOAP is an XML protocol, like CORBA’s IIOP ,that provides a protocol for invoking remote methods. In recent years, web services have emerged as a popular technology for remote method calls. A web service has two components: a) A server can be accessed with SOAP transport protocol. b) A description of the service in the Web Description Language (WSDL) format. A primary attraction of web services is that they are language neutral. WSDL: WSDL is analogous to IDL.It describes the interface of the web service, the methods that can be called & their parameter & return types. The WSDL descriptor describes the services in a language independent manner.For Ex: the WSDL for the Amazon web services (located at http://soap.amazon.com/schemas3/AmazonWebServices.wsdl) describes an AuthorSearchRequest operation. To make web services easy to understand, we look at an example : The Amazon web service allows a programmer to interact with the Amazon system for a wide variety of purposes.For ex: you can get listings of all books with a given author or title, or you can fill shopping carts & place orders.Amazon makes this service available for use by companies that want to sell items to their customers, using the Amazon systems as a fulfillment backend. (draw diagram on page no 337)