Download - + A Short Java RMI Tutorial Usman Saleem
![Page 1: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/1.jpg)
+
A Short Java RMI TutorialUsman Saleemhttp://usmans.info
![Page 2: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/2.jpg)
+Agenda
Introducing RMI
The RMI classes and interfaces
The General RMI Architecture
Demo – build up 4 required classes
Demo – compiling and running the Weather Server
2
![Page 3: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/3.jpg)
+Introducing RMI
An RMI application is often composed of two separate programs, a server and a client. The server creates remotes objects and makes references to those objects accessible. Then it waits for clients to invoke methods on the objects. The client gets remote references to remote objects in the server and invokes methods on those remote objects.
Users use object as though it were a regular, local object Network connections happen automatically behind the
scenes Java ‘serialization’ lets you pass complex data structures
over the network without writing code to parse and reconstruct them
3
![Page 4: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/4.jpg)
+Introducing RMI (cont.)
A distributed object application has to handle the following properties: Locate remote objects Communicate with remote objects Load class bytecodes for objects that are passed as
parameters or return values
4
![Page 5: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/5.jpg)
+Interfaces and Classes in the java.rmi package
5
![Page 6: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/6.jpg)
+The RMI classes and interfaces
6
![Page 7: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/7.jpg)
+The General RMI Architecture
7
![Page 8: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/8.jpg)
+Remote object interface implemenation
8
![Page 9: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/9.jpg)
+RMI Architecture
9
*RRL: Remote Reference Layer
![Page 10: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/10.jpg)
+Runtime Architecture
10
![Page 11: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/11.jpg)
+Stub and Skeleton
Initiates a connection with remote JVM containing the remote object
Marshals (writes and transmits) parameters to remote JVM
Wait for the result of method invocation
Unmarshals (reads) the return value or exception returned
Return the value to the caller
Unmarshals (reads) the parameters for the remote method
Invokes the method on the actual remote method implementation
Marshals (write and transmit) the result (return value or exception) to the caller.
Stub Operation Skeleton Operation
11
![Page 12: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/12.jpg)
+Stub and Skeleton (Cont.)
In Java 2 SDK, Standard Edition, v1.2 an additional stub protocol was introduced that eliminates the need for skeletons in Java 2 platform-only environment.
Instead, generic code is used to carry out the duties performed by the skeletons in JDK 1.1
12
![Page 13: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/13.jpg)
+Demo – build up 4 required classes
13
![Page 14: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/14.jpg)
+Class Diagram – four required classes
14
1
2
3 4
![Page 15: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/15.jpg)
+The interface for remote object
15
The remote interface must satisfy the following conditions:• It must extend the interface Remote.• Each remote method declaration in the remote interface must throw RemoteException
![Page 16: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/16.jpg)
+The remote object implementation The class must extend UnicastRemoteObject and
implement the remote object interface
The constructor should throw RemoteException
16
![Page 17: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/17.jpg)
+The remote object implementation
17
![Page 18: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/18.jpg)
+The RMI Server
Start RMI Registry through code (It can also run from command line)
Create instance of remote object
Export remote object if it does not extends from UnicastRemoteObject
Bind remote object using Naming.bind(throw AlreadyBoundException if a previous binding exists) or Naming.rebind (replace any previous bindings)
18
![Page 19: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/19.jpg)
+The RMI Server
19
![Page 20: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/20.jpg)
+The RMI Client
Lookup the object from the host using Naming.lookup, cast it to any appropriate type, then use it like a local object
20
![Page 21: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/21.jpg)
+The RMI Client
21
![Page 22: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/22.jpg)
+Demo – compiling and running the CrickInfo Server
22
![Page 23: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/23.jpg)
+Compiling CrickInfo Server
1. Call rmic to create stubs of remote object (skeletons are optional in JDK 1.2 and above)
23
![Page 24: + A Short Java RMI Tutorial Usman Saleem](https://reader036.vdocument.in/reader036/viewer/2022062518/56649e915503460f94b968db/html5/thumbnails/24.jpg)
+Compiling and running the CrickInfo Server and Client
3. startup the server
4. start the client
24