Java RMI Essentials - PowerPoint PPT Presentation

About This Presentation
Title:

Java RMI Essentials

Description:

Java RMI Essentials Based on Mastering RMI Rickard Oberg Essentials of Remote Invocation What is RMI? The Principles of RMI How Does RMI Differ from Ordinary Java RMI ... – PowerPoint PPT presentation

Number of Views:69
Avg rating:3.0/5.0
Slides: 29
Provided by: PeterCa84
Category:

less

Transcript and Presenter's Notes

Title: Java RMI Essentials


1
Java RMI Essentials
  • Based on Mastering RMI
  • Rickard Oberg

2
Essentials of Remote Invocation
  • What is RMI?
  • The Principles of RMI
  • How Does RMI Differ from Ordinary Java
  • RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming
  • Summary

3
What is RMI?
  • RMI is a specification (API) for accessing
    objects from a remote JVM.
  • What is specified?
  • How objects are to be coded.
  • How objects can be located invoked.
  • How parameters returned values are passed.
  • Java Remote Method Protocol (JRMP) is Suns
    implementation of the RMI API.

4
The Principles of RMI
  • Meta-principle
  • Make RMI like MI as much as possible.
  • Objects are invoked by calling methods.
  • Expose interfaces not implementation.
  • Exceptions report errors in the computation.
  • GC determines the lifecycle of objects.
  • Get classes that are not part of system classpath
    via classloading.

5
How Does RMI Differ from Local MI?
  • Remote exceptions
  • Remote methods throw java.rmi.RemoteExeption.
  • Pass by value
  • All arguments are pass-by-value.
  • Serializing may hurt performance for large
    objects.
  • Latency
  • Invocations take much longer to complete.
  • Security
  • Arguments/returned value are sent over a network.
    Is privacy an issue?

6
RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming

7
Stubs
  • Stub
  • The client has a proxy for the remote object the
    stub.
  • The stub implements the remote objects
    interfaces.
  • The RMI compiler (rmic) generates the stub.
  • Remote methods invoked by the client are
    delegated to the JRMP engine.
  • The JRMP forwards the call to the server.
  • The server executes the method.
  • The result is returned to the client.

8
CLIENT
MyServer
MyServer Stub
JRMP
RemoteRef hostmyhost, port1234, ObjID0
ltltcallgtgt
ltltsendgtgt
SERVER
JRMP
End-point
ltltcallgt
MyServer
ServerSocket port1234
ltltaccessgtgt
MyServerImpl
Object table
exported objects
MyServer instance maps to ObjID0
9
The Remote Interface
  • It is a set of remotely invoked methods.
  • It has the following characteristics
  • _______________________________________
  • public interface MyRemoteInterface
  • extends java.rmi.Remote // possibly indirectly
  • public ltreturn_typegt myMethod( lttypegt p1, )
  • throws java.rmi.RemoteException
  • // declare other remote methods
  • _______________________________________
  • All parameters return type are serializable.

10
The Hello Interface
  • package masteringrmi.helloworld.interfaces
  • import java.rmi.Remote
  • import java.rmi.RemoteException
  • public interface HelloWorld extends Remote
  • public String helloWorld( String name )
  • throws RemoteException

11
The Hello Interface
  • Style create a contract package
  • It contains the contract between client
    server
  • Remote interfaces of server objects
  • Application exceptions throwable by any remote
    interface
  • Data container classes for data moved between
    client server.
  • Client server get contract classes
    interfaces.
  • Server also gets implementation classes.

12
Implementing the Remote Interface
  • public class HelloWorldImpl extends
    UnicastRemoteObject
  • implements HelloWorld
  • public HelloWorldImpl() throws RemoteException
  • public String helloWorld( String name )
  • return Hello name !

13
Implementing the Remote Interface
  • public class HelloWorldImpl implements HelloWorld
  • public HelloWorldImpl() throws RemoteException
  • UnicastRemoteObject.exportObject( this )
  • public String helloWorld( String name )
  • return Hello name !

14
Implementing the Remote Interface
  • UnicastRemoteObject constructor exports the
    object
  • Makes it available for incoming invocations.
  • The exportObject method does this explicitly.
  • Extending UnicastRemoteObject inherits
    distributed implementations of
  • equals, hashCode, toString.

15
RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming

16
Marshalling
  • Marshalling creates a byte from an object.
  • Unmarshalling does the reverse.
  • To marshal, Java serializes the object.
  • To unmarshal, Java deserializes the byte.
  • public class foo implements Serializable

Copy of Foo
Foo
Bytes
Serialization
Deserialization
17
Dynamic Classloading
  • We defer discussion of this until later.

18
Security
  • To dynamically download stubs, the client
  • Sets a security manager
  • ________________________________________________
    ______
  • import java.rmi.RMISecurityManager
  • . . .
  • if ( System.getSecurityManager() null )
    System.setSecurityManager( new
    RMISecurityManager() )
  • ________________________________________________
  • Has a policy file that permits downloading
  • ________________________________________________
  • grant
  • permission java.security.AllPermission
  • ________________________________________________

19
Class Versioning
  • Server changes are propagated to clients that
    subsequently download the stub.
  • What about running clients that already have the
    stub?
  • Basically, this is a problem.
  • serial version UID can be used to detect
    incompatibilities.
  • Jini further ameliorates the version problem.

20
RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming

21
RMI Threading Network Connection Management
  • Since RMI on the same remote object may execute
    concurrently, a remote object implementation
    needs to make sure its implementation is
    thread-safe.
  • The RMI specification, section 3.2

22
Network Connections
  • RMI specifies socket factory interfaces to get
    sockets on the client server
  • Java.rmi.server.RMIClientSocketFactory
  • Java.rmi.server.RMIServerSocketFactory
  • Override the default implementation
  • (to provide encryption, authentication, )
  • Selecting an features at run time is desirable
    Some jobs want encryption, some do not.
  • Custom implementations are discussed later.

23
Threading Model
  • The JRMP implementation for the server
  • Instantiates a thread for each connection.
  • It listens for its associated clients calls.
  • It handles each call to completion.
  • The JRMP implementation for the client
  • Concurrent calls from a client cause concurrent
    threads connecting to the server.
  • This may swamp a server.
  • If your client makes concurrent calls, you may
    want a different implementation.

24
RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming

25
Distributed Garbage Collection
  • RMI has distributed garbage collection (DGC).
  • Server tracks clients who have its stub.
  • Server keeps a count of such clients.
  • Count is decremented when client
  • explicitly relinquishes reference OR
  • doesnt renew its lease (default 10 min.), e.g.,
    client crashed
  • Leasing is due to Miller Drexler, in
  • Incentive Engineering for Computational Resource
    Management. K. E. Drexler M. S. Miller, B. A.
    Huberman (ed.), (Studies in Computer Science
    Artificial Intelligence), 1988.
  • If local remote references 0, it is garbage.

26
The Unreferenced Interface
  • A server can implement Unreferenced
  • It has 1 method unreferenced.
  • It is called when there are no remote references
    to the object.
  • Being bound in the RMI registry counts as a
    remote reference.
  • It must unbind itself before unreferenced can be
    invoked.

27
RMI/JRMP Architecture
  • Stubs
  • Marshalling
  • RMI Threading Network Connection Management
  • Distributed Garbage Collection
  • Naming

28
Naming
  • Rmiregistry allows
  • A server to store its (serialized) stub on a web
    server
  • A client to download deserialize the stub.
  • The essential information the url of the
    serialized stub file.
Write a Comment
User Comments (0)
About PowerShow.com