Presentation is loading. Please wait.

Presentation is loading. Please wait.

Presentation: RMI Continued 2 Using The Registry & Callbacks.

Similar presentations


Presentation on theme: "Presentation: RMI Continued 2 Using The Registry & Callbacks."— Presentation transcript:

1 Presentation: RMI Continued 2 Using The Registry & Callbacks

2 Ingeniørhøjskolen i Århus Slide 2 af 17 Goals of this lesson After this 1x35 lessons you will be –Introduced to the RMI registry (rmiregistry) –Introduced to RMI Callbacks Next time Java RMI Activation and RMI IIOP

3 Ingeniørhøjskolen i Århus Slide 3 af 17 Architecture ServerClient Stub Registry Interfaces Skeleton Activation Interfaces RMI Runtime (rmid,rmiregistry) coded manually rmic generated bind lookup RMI registry is light-weight version naming service

4 Ingeniørhøjskolen i Århus Slide 4 af 17 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; }

5 Ingeniørhøjskolen i Århus Slide 5 af 17 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 Instantiate a new object and register (bind it) in the ”rmiregistry” Following methods available: bind, rebind, unbind, lookup

6 Ingeniørhøjskolen i Århus Slide 6 af 17 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(); } ”lookup” the HelloServer – and call Method sayHello() on Stub ”lookup” the HelloServer – and call Method sayHello() on Stub Client object (HelloClient.java)

7 Ingeniørhøjskolen i Århus Slide 7 af 17 Limitations of RMI Registry 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 –DNS usage will partly solve this No composite names Security Restriction: Name bindings cannot be created from remote hosts There has to be a registry on each host

8 Ingeniørhøjskolen i Århus Slide 8 af 17 Alternative Registry Use JNDI: Java Naming and Directory Interface –A standard API for accessing naming and directory services (like JDBC to databases) –Standard i Java: LDAP, RMI Registry, CORBA Naming service http://java.sun.com/products/jndi /tutorial/getStarted/overview/ind ex.html intro to JNDIhttp://java.sun.com/products/jndi /tutorial/getStarted/overview/ind ex.html http://java.sun.com/products/jndi /tutorial/objects/storing/remote.h tml JNDI and RMIhttp://java.sun.com/products/jndi /tutorial/objects/storing/remote.h tml

9 Ingeniørhøjskolen i Århus Slide 9 af 17 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 inconveniences. May be solved more elegantly: –LocateRegistry.createRegistry(PORT); And you are up and running, ready to bind remote objects

10 Ingeniørhøjskolen i Århus Slide 10 af 17 Callbacks 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 -BUT: turn the client object into a remote object -Web services -No support.

11 Ingeniørhøjskolen i Århus Slide 11 af 17 Data Collection & Presentation Server TRS RMI/CORBA Object New Reading DB PSP View Readings Classic Client / Sever model is sufficient for Data Collection & Presentation

12 Ingeniørhøjskolen i Århus Slide 12 af 17 Alarm level surveillance Server TRS New Reading DB PSP View Readings Problem: The client / server pattern breaks down when we want to notify FROM the server to the client. Solution: Client polling OR peer-to-peer model -> e.g. using Callbacks Present Alarm RMI/CORBA Object

13 Ingeniørhøjskolen i Århus Slide 13 af 17 Issues Distributed Deadlock –If client and server single-threaded –Client calls server, server calls client back instantly –Deadlock – both are blocked, waiting for a response –Solution: Do not make single-threaded applications Problem: not all OS’s support multithreading Inconvenience : multithreading introduces new complexities Callback Persistence –Server should store registered callbacks on persistent storage in case of server failure Callback Failure –As callback objects are transient, server should employ a “timeout” strategy for callback communication Coupling –Callback objects comes at a price of higher coupling


Download ppt "Presentation: RMI Continued 2 Using The Registry & Callbacks."

Similar presentations


Ads by Google