Top Banner
IADCS Diploma Course Distributed Programming with Java U Nyein Oo COO/Director(IT) Myanma Computer Co., Ltd
45
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Distributed Programming using RMI

IADCS Diploma CourseDistributed Programming with Java

U Nyein OoCOO/Director(IT)Myanma Computer Co., Ltd

Page 2: Distributed Programming using RMI

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.

Page 3: Distributed Programming using RMI

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.

Page 4: Distributed Programming using RMI

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)

Page 5: Distributed Programming using RMI

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

Page 6: Distributed Programming using RMI

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

Page 7: Distributed Programming using RMI

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)

Page 8: Distributed Programming using 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

Page 9: Distributed Programming using RMI

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)

Page 10: Distributed Programming using RMI

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

Page 11: Distributed Programming using RMI

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.

Page 12: Distributed Programming using RMI

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.

Page 13: Distributed Programming using RMI

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.

Page 14: Distributed Programming using RMI

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

Page 15: Distributed Programming using RMI

Copyright : MCC Distributed Computing with Jav15

Method invocation in CORBA

IDL

Stub

IDL

Skeleton

Client Host Server Host

client

Object

Server

Object

ORB

Page 16: Distributed Programming using RMI

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.

Page 17: Distributed Programming using RMI

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.

Page 18: Distributed Programming using RMI

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

Page 19: Distributed Programming using RMI

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.

Page 20: Distributed Programming using RMI

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

Page 21: Distributed Programming using RMI

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

Page 22: Distributed Programming using RMI

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

Page 23: Distributed Programming using RMI

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

Page 24: Distributed Programming using 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

Page 25: Distributed Programming using RMI

Copyright : MCC Distributed Computing with Jav25

java.rmi.registry Package

This package provides classes and interfaces for remote registry

Page 26: Distributed Programming using RMI

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

Page 27: Distributed Programming using RMI

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

Page 28: Distributed Programming using RMI

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

Page 29: Distributed Programming using RMI

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

Page 30: Distributed Programming using RMI

Copyright : MCC Distributed Computing with Jav30

Implementing RMI

Implementing RMI involves two steps namely: – Implementing RMI on Remote Host – Implementing RMI on Local Host

Page 31: Distributed Programming using RMI

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

Page 32: Distributed Programming using RMI

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

Page 33: Distributed Programming using RMI

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

Page 34: Distributed Programming using RMI

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;

}

Page 35: Distributed Programming using RMI

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);

}}

}

Page 36: Distributed Programming using RMI

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;

}

Page 37: Distributed Programming using RMI

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)

Page 38: Distributed Programming using RMI

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

Page 39: Distributed Programming using RMI

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)

Page 40: Distributed Programming using RMI

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; }

Page 41: Distributed Programming using RMI

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); } }}

Page 42: Distributed Programming using RMI

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; } }

Page 43: Distributed Programming using RMI

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")); }}

Page 44: Distributed Programming using RMI

Copyright : MCC Distributed Computing with Jav44

Invoke rmi registry & Run Client Remote

Page 45: Distributed Programming using RMI

Copyright : MCC Distributed Computing with Jav45

Running Remote Server