presentation rmi continued 2 using the registry callbacks n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Presentation: RMI Continued 2 Using The Registry & Callbacks PowerPoint Presentation
Download Presentation
Presentation: RMI Continued 2 Using The Registry & Callbacks

Loading in 2 Seconds...

play fullscreen
1 / 12

Presentation: RMI Continued 2 Using The Registry & Callbacks - PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on

Presentation: RMI Continued 2 Using The Registry & Callbacks. Goals of this lesson. After this 1x35 lessons you will be Introduced to the RMI registry (rmiregistry) And how to use it Introduced to RMI Callbacks Next time Java RMI Activation and RMI IIOP. Outline. Group presentation

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Presentation: RMI Continued 2 Using The Registry & Callbacks' - myles-evans


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
goals of this lesson
Goals of this lesson
  • After this 1x35 lessons you will be
    • Introduced to the RMI registry (rmiregistry)
      • And how to use it
    • Introduced to RMI Callbacks
  • Next time Java RMI Activation and RMI IIOP
outline
Outline
  • Group presentation
    • RMI compared with Web services (SOAP)
  • Theory: (35 min.)
    • Repetition from last time
      • The Architecture of Java RMI and the RMI registry
    • The concept of Callbacks in Java RMI
  • Exercises
    • Many had trouble last time
    • Complete this
    • Make a callback version of HelloWorld
rmi client and server implementation

Java compiler - javac

Java compiler - javac

Client

Server

RMI Client and Server Implementation

Hello.java

HelloClient.java

HelloImpl.java

rmic Compiler

HelloImpl_Stub.class

HelloImpl_Skeleton.class

included in

generates

reads

architecture
Architecture

coded manually

Client

Server

lookup

bind

Registry

Activation

Stub

Skeleton

Interfaces

Interfaces

rmic generated

rmic generated

RMI Runtime (

rmid

,rmiregistry

)

naming in rmi the rmi registry
Naming in RMI: The RMI Registry
  • Simplified version of CORBA Naming
  • No composite names
  • Security Restriction: Name bindings cannot be created from remote hosts
  • There has to be a registry on each host
naming in rmi the rmi registry1
Naming in RMI: The RMI Registry

package java.rmi.registry;

public interface Registry extends java.rmi.Remote {

public static final int REGISTRY_PORT = 1099;

public java.rmi.Remote lookup(String name)

throws java.rmi.RemoteException,

java.rmi.NotBoundException,

java.rmi.AccessException;

public void bind(String name, java.rmi.Remote obj)

throws java.rmi.RemoteException,

java.rmi.AlreadyBoundException,

java.rmi.AccessException;

public void rebind(String name, java.rmi.Remote obj)

throws java.rmi.RemoteException,

java.rmi.AccessException;

public void unbind(String name)

throws java.rmi.RemoteException,

java.rmi.NotBoundException,

java.rmi.AccessException;

public String[] list()

throws java.rmi.RemoteException,

java.rmi.AccessException;

}

slide8

package examples.hello;

import java.rmi.Naming;

import java.rmi.RemoteException;

import java.rmi.RMISecurityManager;

import java.rmi.server.UnicastRemoteObject;

public class HelloImpl extends UnicastRemoteObject implements Hello {

public HelloImpl() throws RemoteException {

super();

}

public String sayHello() {

return "Hello World! ;

}

public static void main(String args[]) {

// Create and install a security manager

//if (System.getSecurityManager() == null) {

// System.setSecurityManager(new RMISecurityManager());

//}

try {

HelloImpl obj = new HelloImpl();

// Bind this object instance to the name "HelloServer"

Naming.rebind("rmi://192.168.1.101/HelloServer", obj);

System.out.println("HelloServer bound in registry");

} catch (Exception e) {

System.out.println("HelloImpl err: " + e.getMessage());

e.printStackTrace();

}

}

}

Server object

(HelloImpl.java)

Instantiate a new object and register

(bind it) in the ”rmiregistry”

Following methods available:

bind, rebind, unbind, lookup

slide9

package examples.hello;

import java.rmi.Naming;

import java.rmi.RemoteException;

public class HelloClient {

public static void main(String args[])

{

try {

obj = (Hello)Naming.lookup("rmi://192.168.1.101/HelloServer");

String message = obj.sayHello();

System.out.println(message);

} catch (Exception e) {

System.out.println("HelloApplet exception: " + e.getMessage());

e.printStackTrace();

}

}

}

Client object

(HelloClient.java)

”lookup” the HelloServer – and call

Method sayHello() on Stub

limitations of naming
Limitations of Naming
  • Limitation of Naming in all approaches: Client always has to identify the server by name.

obj = (Hello)Naming.lookup("rmi://192.168.1.101/HelloServer");

  • Inappropriate if client just wants to use a service at a certain quality but does not know from who:
    • Automatic cinema ticketing,
    • Video on demand,
    • Electronic commerce.
  • Security restriction breaks name location transparency
nice feature bootstrapping the registry
Nice feature – bootstrapping the Registry
  • As until now, you have been manually starting the RMI Registry, which is a constant source of errors and other inconviances.
  • May be solved more elegantly:
    • LocateRegistry.createRegistry(PORT);
  • And you are up and running, ready to bind remote objects
callbacks
Callbacks
  • Remember PRJ3 / OBJ?
  • Sometimes Client/Server is not enough
  • Publish/Subscribe pattern / Observer
  • CORBA has support for this
    • An ORB is always both client and server
  • Java RMI does not have support for this
  • Solution:
    • Turn the client object into a remote object