distributed programming using rmi
Post on 12-May-2015
6.716 Views
Preview:
TRANSCRIPT
IADCS Diploma CourseDistributed Programming with Java
U Nyein OoCOO/Director(IT)Myanma Computer Co., Ltd
Copyright : MCC Distributed Computing with Jav2
Why Distributed Application?
Most of development and deployment environments are Networked
Applications design to be distributed
(which is become necessary) Process is distributed across multiple
networked computers Implemented as Client/server Systems.
Copyright : MCC Distributed Computing with Jav3
Client/Server Systems?
Client requests resource from Server Server accept the client’s request and
process and give result back to client Typically there are three components in
client/server system.
Copyright : MCC Distributed Computing with Jav4
Three components of CSS
User Interface Layer( implemented by application client like web browser)
Information Processing Layer( implemented by application client/server/server support)
Information Storage Layer( implemented by database server like web server,FTP server)
Copyright : MCC Distributed Computing with Jav5
IPL at Client Machine
User
Interface
Layer
(Web
Browser)
Information
Processing
Layer
(Application Client)
Information
Storage
Layer
(Application Server)
Client Machine Server Machine
Copyright : MCC Distributed Computing with Jav6
IPL at Server Machine
User
Interface
Layer
(Web
Browser)
Information
Processing
Layer
(Application Client)
Information
Storage
Layer
(Application Server)
Client Machine Server Machine
Copyright : MCC Distributed Computing with Jav7
Different type of Method Invocation
Distributed Computing Environment(DCE) Distributed Components Object
Model(DCOM) Common Object Request Broker Architecture
(CORBA) Java’s Remote Methods Invocation(RMI)
Copyright : MCC Distributed Computing with Jav8
Distributed Computing Environment(DCE)
Industry standard of the OSF(Open Software Foundation)
Vendor-neutral set of Distributed Computing Provide security services to protect and
control access to data Run of the major computing platforms and
designed to support distributed application Key Technology for security,www and
Distributed Objec
Copyright : MCC Distributed Computing with Jav9
How Distributed Systems work?
Organized into cell(which is nothing but a group of processing resources,services and users that support a common function and share a common set of DCE devices)
For example …separate department in a company like(admin,finance..ect)
Copyright : MCC Distributed Computing with Jav10
The services and Technologies used within DCE Cell
Directories Service Distributed File Service(DFS) Distributed Time Service(DTS) Security Service Remote Procedure Calls(RPC) DCE Threads
Copyright : MCC Distributed Computing with Jav11
What is a DCOM?
Distributed Component Object Model Product of Microsoft Corporation Started with OLE technology that used to
support compound documents.(one that is product of multiple application)
COM is solution for OLE and different from DCE in its design approach.
Copyright : MCC Distributed Computing with Jav12
DCOM(cont)
COM is object oriented whereas DCE is procedural oriented
A model ,programming Language can be used COM to create distributed application
DCOM allows a COM object on one computer to access methods of another COM object on some other computers.
The remote object is accessed the same manner as the local object.
Copyright : MCC Distributed Computing with Jav13
DCOM(cont)
DCOM is distributed COM over multiple computers.
Local Object invokes the methods of Local COM library of the remote object it is trying to access.
COM library process the functions calls using COM runtime
COM Runtime communicate using Object RPC
The most important feature is application security is based on Windows NT Policy.
Copyright : MCC Distributed Computing with Jav14
CORBA
Common Object Request Broker Architecture Most popular architecture for building
distributed object oriented application Is open standard not tied to particular vendor Objects are accessible via ORBs The client interface to ORB is written by
IDLKnown as IDL stub The Server interface to ORB is IDL Skeleton
Copyright : MCC Distributed Computing with Jav15
Method invocation in CORBA
IDL
Stub
IDL
Skeleton
Client Host Server Host
client
Object
Server
Object
ORB
Copyright : MCC Distributed Computing with Jav16
Benefits using CORBA
Open standard and works on all platforms Both clients and servers can be distributed Language independent Just have to provide IDL interface to object An international standard and recognized by
most of software vendors.
Copyright : MCC Distributed Computing with Jav17
Why Java Distributed Object Model Need?
TCP Socket is big Overhead DCE ‘s RPC does not gel with Java OODA. DCOM has good performance for Windows
and does not support java object fully. CORBA is excellent but Java programmer
will have to learn IDL to develop DJA.
Copyright : MCC Distributed Computing with Jav18
RMI (your best choice for java)
JavaSoft design for Object oriented distributed pure java application.
RMI also need client stub & server skeleton Support seamless remote invocation on
objects in different VMs. Support callbacks from server to applets. Integrated DO model into Java Language
Copyright : MCC Distributed Computing with Jav19
RMI(cont;)
Make differences between DO model and Local Java Object model apparent.
Writing reliable distributed applications as simple as possible.
Preserve the type-safety provided by the Java Runtime Environment
Save Java environment provided by security managers and class loaders.
Copyright : MCC Distributed Computing with Jav20
RMI Architecture
JDOM is simply extension of JOM Objects interact each other within same JVM
in Java’s Object Model Objects interact with an object in another
JVM at Java Distributed Object Model Client Object(local object) does not reference
directly on Server Object(remote object) and references a remote interface
Copyright : MCC Distributed Computing with Jav21
Allows server objects to differentiate between their local and remote interface
Present different access modes No need to have server class file at the
compilation of client objects RMI follow like CORBA except ORB RMI Setup the Remote Reference Layer
Advantages using Remote Interface
Copyright : MCC Distributed Computing with Jav22
Three tier Architecture of Java RMI
Client
Object
Server
Object
Stub Skeleton
Remote Reference Layer Remote Reference Layer
Transport Layer Transport Layer
Lower Layer Protocols Lower Layer Protocols
Copyright : MCC Distributed Computing with Jav23
Explain java.rmi packages:– java.rmi– java.rmi.registry– java.rmi.server– java.rmi.activation– java.rmi.dgc
Three tiered layering of Java RMI
Inside RMI
Copyright : MCC Distributed Computing with Jav24
java.rmi Package
This package provides the remote interface
It does not have any methods
It supports the following classes:
– MarshalledObject class
– Naming class
– RMISecurityManager class
It defines exceptions such as RemoteException
Copyright : MCC Distributed Computing with Jav25
java.rmi.registry Package
This package provides classes and interfaces for remote registry
Copyright : MCC Distributed Computing with Jav26
java.rmi.server Package
This package implements remote stubs and skeletons
It is also used to support RMI communications
It consists of the following classes:
– RemoteObject class
– RemoteServer class
– RMILoader class
– Operation class
– LogStream class
Copyright : MCC Distributed Computing with Jav27
java.rmi.activation Package
This package is used to activate remote objects, when needed It consists of the following classes:
– Activable class – ActivationDesc class
getClassName( ) getCodeSource( ) getData( ) getGroupID( ) getRestartMode( )
– ActivationGroup class
Copyright : MCC Distributed Computing with Jav28
java.rmi.dgc Package
This package provides classes and interfaces that the RMI distributed garbage collector uses
The server side of the distributed garbage collector uses this package
It has two methods, dirty( ) and clean( ), which indicate that the client has referenced a remote object, and that the remote reference has been completed, respectively
Copyright : MCC Distributed Computing with Jav29
Three Tiered Layering of Java RMI
The client object evokes the methods of stub The stub uses the remote layer to communicate with the
skeleton The remote layer uses the transport layer to establish the
connection between local and remote server
Copyright : MCC Distributed Computing with Jav30
Implementing RMI
Implementing RMI involves two steps namely: – Implementing RMI on Remote Host – Implementing RMI on Local Host
Copyright : MCC Distributed Computing with Jav31
Implementing RMI on Remote Host
Step 1
Create a remote interface:– This has to be public and must extend the Remote interface – This method must throw RemoteException
Step 2
Create a class that implements the remote interface: – This class should create and initialize the remote object – It should implement all the methods defined in the remote
interface – There should be a main( ) method that will be executed as a
remote class – This main( ) method should also take care of security using the
setSecurityManager( ) method
Copyright : MCC Distributed Computing with Jav32
Implementing RMI on Remote Host (Contd…)
Step 3 Create stub and skeleton classes using the rmic command.
Step 4 Copy the remote interface and stub file to the client host.
Step 5 Start the Remote Registry Server using the command start rmiregistry.
Step 6 Execute the program using the java command to create an object of class. This class registers itself with the remote registry
Copyright : MCC Distributed Computing with Jav33
Implementing RMI on Local Host
Once RMI is implemented on the remote host, the remote server is up and running
Create a client program to remotely invoke the method of the object, and display the results
Copyright : MCC Distributed Computing with Jav34
Genreation Remote Interface
//remote interfaceimport java.net.*;import java.security.*;import java.rmi.*;public interface MyServer extends java.rmi.Remote{
String getAndSetMessage(String message) throws java.rmi.RemoteException;
}
Copyright : MCC Distributed Computing with Jav35
Generation Client RMI
import java.rmi.RMISecurityManager;import java.rmi.Naming;import java.net.*;import java.security.*;public class MyClient{public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());try{MyServerser=(MyServer)Naming.lookup("//147.81.10.2/ServerTest");String serverString=ser.getAndSetMessage("I amd Trying ");System.out.println("reply from the server is "+serverString);}catch(Exception e){System.out.println(e);
}}
}
Copyright : MCC Distributed Computing with Jav36
Generation Server RMI
import java.rmi.*;import java.rmi.server.*;import java.rmi.registry.*;import java.security.*;import java.net.*;public class MyServerImpl extends UnicastRemoteObject implements MyServer{static String hostName="147.81.10.2";String name;public MyServerImpl(String name) throws RemoteException{
super();this.name=name;
}
Copyright : MCC Distributed Computing with Jav37
public String getAndSetMessage(String message)throws RemoteException{
return("My name is "+name+"Thanks for message"+message);}public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());try{
String objectname="Servertest";MyServerImpl theServer=new MyServerImpl(objectname);Naming.rebind("//"+hostName+"/"+objectname,theServer);System.out.println("I am Registered");}catch(Exception e){
System.out.println(e);}
}}
Generation Server RMI (cont)
Copyright : MCC Distributed Computing with Jav38
Steps to Compilation
Compilation Remote Interface File (same as regular .java file) Compilation Remote Client File
(same as regular .java file) Compilation Remote Server File
I.same as regular .java fileII. User rmic compiler to create stub and
skeleton class files like c:\jdk1.3.1\bin>rmic MyServerImpl
Copyright : MCC Distributed Computing with Jav39
Starting rmi registry
>start rmiregistry Run as follow
>java –Djava.security.policy=policy MyServerIMpl
Edit policy for permission grant
Steps to Compilation(cont)
Copyright : MCC Distributed Computing with Jav40
Example-2(Remote Interface)
//Remote Interfaceimport java.rmi.*;import java.net.*;
public interface Server1 extends Remote {public void doSomething()
throws RemoteException; }
Copyright : MCC Distributed Computing with Jav41
Client Remote
import java.rmi.*;import java.net.*;import java.rmi.server.*;public class Client1 { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Server1 ro = (Server1)Naming.lookup("doSomething"); System.out.println("Location: "+System.getProperty("LOCATION")); ro.doSomething(); } catch (Exception e){ e.printStackTrace(); System.exit(-1); } }}
Copyright : MCC Distributed Computing with Jav42
Server Remote
import java.rmi.*;import java.rmi.server.*;import java.rmi.registry.*;public class Server1Impl extends java.rmi.server.UnicastRemoteObjectimplements Server1 { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Server1Impl obj = new Server1Impl(); Naming.rebind("doSomething", obj); System.out.println("doSomething bound in registry"); } catch (Exception e) { e.printStackTrace(); return; } }
Copyright : MCC Distributed Computing with Jav43
Server Remote (cont)
public Server1Impl() throws RemoteException { }
public void doSomething() throws RemoteException { System.out.println("This message is printed by the Server1 object"); System.out.println("Location: " + System.getProperty("LOCATION")); }}
Copyright : MCC Distributed Computing with Jav44
Invoke rmi registry & Run Client Remote
Copyright : MCC Distributed Computing with Jav45
Running Remote Server
top related