Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Client/Server Distributed Systems 240-322, Semester 1, 2005-2006 13. RMI and CORBA Objectives – introduce rmi and CORBA 240-322 Cli/Serv.: rmiCORBA/13 1 1. RMI Overview 1.1 1.2 1.3. 1.4. 1.5. 1.6. 1.7. 240-322 Cli/Serv.: rmiCORBA/13 What is RMI? A Typical RMI Application Server-side Features Client-side Features Advantages Disadvantages More Details on RMI 2 1.1. What is RMI? RMI == Remote Method Invocation – allows a Java object to call a method of a Java object running on another machine – RMI is a modern version of RPC for communication between Java objects 240-322 Cli/Serv.: rmiCORBA/13 3 1.2. A Typical RMI Application 1099 lookup remote 2 reference remote stub client invoke method 4 via the remote stub 240-322 Cli/Serv.: rmiCORBA/13 rmiregistry store (rebind) remote 1 references 3 server remote objects 4 1.3. Server-side Features The server: – creates remote objects (objects that will be accessible by clients) the server is sometimes called a server factory – places remote references (names) for the objects in the rmiregistry they 240-322 Cli/Serv.: rmiCORBA/13 can then be accessed by clients continued 5 remote interface impl. A remote object is made from a remote interface and a separate implementation class. A remote interface is a set of method prototypes – a method prototype is the name of the method and the types of its input arguments and return type 240-322 Cli/Serv.: rmiCORBA/13 continued 6 Example Remote Interface import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; } The remote object will have this interface 240-322 Cli/Serv.: rmiCORBA/13 7 1.4. Client-side Features The client gets a reference to a server's remote object by querying the rmiregistry. At the programming level, this reference appears to be the remote object – in fact it refers to a remote stub which is downloaded invisibly from the rmiregistry 240-322 Cli/Serv.: rmiCORBA/13 8 The remote stub is an ordinary Java class – its purpose is to handle the low-level communication between the client and the remote object on the server-side. Object data is passed between the client and server using a standard feature of Java called object serialization. 240-322 Cli/Serv.: rmiCORBA/13 9 Diagram of Communication client hi.sayHello() is really... remote object 1. serialize 3. call 4. result 6. result the call 5. stream of bytes remote server stub 2. stream of bytes 240-322 Cli/Serv.: rmiCORBA/13 10 1.5. Advantages Dynamic code loading – a client does not need to contain any communication code when written -- that is downloaded when the remote stub is retrieved – a client can dynamically download other classes e.g. those used by the remote stub – the server can also download code from the client 240-322 Cli/Serv.: rmiCORBA/13 continued 11 The programmer doesn't write any communication code – the remote stub is generated automatically by passing the remote interface to the RMI compiler (rmic) 240-322 Cli/Serv.: rmiCORBA/13 12 1.6. Disadvantages Not easy to integrate RMI Java code with legacy applications in other languages (e.g. C, C++). 240-322 Cli/Serv.: rmiCORBA/13 13 1.7. More Details on RMI The Java RMI tutorial http://java.sun.com/docs/ A starting point for RMI information: http://java.sun.com/products/jdk/rmi 240-322 Cli/Serv.: rmiCORBA/13 14 2. CORBA Overview 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. What is CORBA? Important CORBA Features Why use CORBA? CORBA/Java Advantages A CORBA Application Other CORBA Coding Styles Comparisons with Other Approaches More Details on CORBA 240-322 Cli/Serv.: rmiCORBA/13 15 2.1. What is CORBA? The Common Object Request Broker Architecture (CORBA) – a specification, not an implementation The Object Management Group’s (OMG) aim: – specify a distributed computing environment within an object-oriented framework i.e. 240-322 Cli/Serv.: rmiCORBA/13 using objects, methods, message passing, etc. 16 Using CORBA (simple view) objects managed by the server Client object call a method in an object managed by the server by using an object reference ORB Server method call & result ORB network 240-322 Cli/Serv.: rmiCORBA/13 17 ORBs An Object Request Broker (ORB) implements the features specified by CORBA. An ORB can be coded in any language – so long as it supports CORBA’s functionality ORBs communicate using the Internet InterORB Protocol (IIOP) – an extension of TCP 240-322 Cli/Serv.: rmiCORBA/13 18 Major ORB Components Client Dynamic Invocation Object Implementation IDL Stubs ORB Interface IDL Skeleton Object Adapter ORB Core 240-322 Cli/Serv.: rmiCORBA/13 19 Using CORBA (more detail) Client Server IDL client stub IDL server skeleton ORB interface ORB interface ORB internals ORB internals Network 240-322 Cli/Serv.: rmiCORBA/13 20 (Java) IDL IDL: Interface Definition Language – for defining OO data and methods The J2SE idltojava compiler generates client stubs and server skeletons for work with any CORBA ORB. J2SE includes a simple (free) ORB. 240-322 Cli/Serv.: rmiCORBA/13 21 IDL Examples module HelloApp { interface Hello { string sayHello(); }; }; 240-322 Cli/Serv.: rmiCORBA/13 continued 22 module Appliance { interface TV { readonly attribute string SerialNo; attribute short Vol; attribute short Channel; void operate(); }; interface WebTV : TV { void surfTo(in URL url); }; }; 240-322 Cli/Serv.: rmiCORBA/13 23 2.2. Important CORBA Features An object’s interface (service) is completely separated from its implementation. An object’s location is completely hidden. Consequently, CORBA provides: – a naming service (white pages) – a trading service (yellow pages) – an interface Repository (IR) 240-322 Cli/Serv.: rmiCORBA/13 continued 24 Object communication is greatly simplified: – messages, written in IDL An object can find other objects at run-time by using the Dynamic Invocation Interface (DII): – but the usual approach is to already know the location of the other object 240-322 Cli/Serv.: rmiCORBA/13 continued 25 Objects can be built more easily by using pre-existing CORBA services for: – message encoding, object locating, security, etc. Advanced services: – persistent objects, transactions, concurrency control, etc. 240-322 Cli/Serv.: rmiCORBA/13 continued 26 CORBA facilities: – horizontal and vertical application frameworks – e.g. printing, mobile agents Convert legacy code in Basic, C, etc. into objects – uses CORBA object adaptors 240-322 Cli/Serv.: rmiCORBA/13 27 2.3. Why Use CORBA? It provides a powerful OO mechanism for defining the interfaces between distributed objects. It offers many services and facilities. Platform/language independent. An open standard: – ensures its continued innovation and evolution 240-322 Cli/Serv.: rmiCORBA/13 28 2.4. CORBA/Java Advantages CORBA’s advantages for Java: – CORBA supports object method calling from anywhere – CORBA allows Java to work with objects coded in other (non-OO) languages – CORBA augments Java’s networking features e.g. it encourages multi-host applications 240-322 Cli/Serv.: rmiCORBA/13 continued 29 Java’s advantages for CORBA – Java’s OO features match those in CORBA e.g. separation of interface (service) and impl. – Java has many useful features for implementing CORBA services and facilities: multi-threading, exceptions, GUI, packages, automatic garbage collection 240-322 Cli/Serv.: rmiCORBA/13 30 2.5. A CORBA Application 1. Write an IDL interface for the remote objects managed by the server. 2. Compile the IDL interface – it generates a Java version of the interface – it generates stub and skeleton code for the client and server 240-322 Cli/Serv.: rmiCORBA/13 continued 31 3. Write the server, which has two parts – the server (factory) it creates remote objects – the remote object implementation (of the IDL interface) 4. Implement the client – it contacts and uses a remote object 240-322 Cli/Serv.: rmiCORBA/13 32 Running the Application network lookup remote reference 2 to an object client O R B tnameserv 3 remote stub ORB 4 invoke method via the remote reference and stub 240-322 Cli/Serv.: rmiCORBA/13 store (rebind) remote references 1 for objects server factory remote objects 33 Using a Remote Object Client (object) object ref server method invocation object 4 Client server object ref object 240-322 Cli/Serv.: rmiCORBA/13 execution continued 34 Client object ref server return method result object Client object ref 240-322 Cli/Serv.: rmiCORBA/13 server garbage collect object 35 Client Callback 4 Client object A object ref B method invocation Server object B object ref A object ref A 240-322 Cli/Serv.: rmiCORBA/13 continued 36 method invocation (callback) Client object A object ref B 240-322 Cli/Serv.: rmiCORBA/13 Server object B object ref A 37 2.6. Other CORBA Coding Styles 2.6.1. Single-threaded server 2.6.2. Multi-threaded server 2.6.3. Being a client and a server 2.6.4. Blocking vs. one-way 2.6.5. Pass by reference vs. pass by value 240-322 Cli/Serv.: rmiCORBA/13 38 1.6.1. Single-threaded Server server client 1 client 2 method call suspended busy result method call wait call proceeds suspended busy result 240-322 Cli/Serv.: rmiCORBA/13 39 2.6.2. Multi-threaded Server server client 1 client 2 method call method call suspended result suspended result thread exits 240-322 Cli/Serv.: rmiCORBA/13 thread exits 40 Object Factory Pattern server client 1 client 2 request object return ref method call request object return ref method call result result object 240-322 Cli/Serv.: rmiCORBA/13 object 41 2.6.3. Being a Client and a Server Client A Server D Client/ Server C Client B 240-322 Cli/Serv.: rmiCORBA/13 Server E continued 42 Usually, a client can be single-threaded, and a server should be multi-threaded. In mixed-mode, the client may need to be multi-threaded to handle its server role. 240-322 Cli/Serv.: rmiCORBA/13 43 A Mixed-mode single-threaded Problem client/ server 1 client/ server 2 method call suspended X method call waits forever suspended deadlock 240-322 Cli/Serv.: rmiCORBA/13 44 Multi-threaded Solution client/ server 1 client/ server 2 method call method call result thread exits suspended result thread exits 240-322 Cli/Serv.: rmiCORBA/13 45 2.6.4. Blocking vs. One-way Blocking server client method call suspended result busy processing resumes 240-322 Cli/Serv.: rmiCORBA/13 46 client oneway method call server one-way processing continues busy method call finishes Problem: the client has no way of knowing if the method call has succeeded. 240-322 Cli/Serv.: rmiCORBA/13 47 2.6.5. Pass by Reference vs. Value server client Pass an object by reference. 240-322 Cli/Serv.: rmiCORBA/13 request object return ref method call result object 48 server client Pass an object by value. request object return copy of object create object object object 240-322 Cli/Serv.: rmiCORBA/13 continued 49 If a client invokes many methods in an object, it may be better, in terms of efficiency, to copy it to the client. 240-322 Cli/Serv.: rmiCORBA/13 50 2.7. More Details on CORBA Beginners Java and CORBA tutorial: http://java.sun.com/developer/ onlineTraining/corba/corba.html More technical Java & CORBA tutorial: http://java.sun.com/j2se/1.5.0/docs/ guide/idl/ OMG Site: http://www.omg.org 240-322 Cli/Serv.: rmiCORBA/13 continued 51 Java Programming with CORBA Gerald Brose and others John Wiley, 2001, 3rd ed. http://java.coe.psu.ac.th/ForMember/ Books.html#Network 240-322 Cli/Serv.: rmiCORBA/13 52