presentation 18: rmi introduction. goals of this lesson after this 35 min. lesson you will be:...

20
Presentation 18: RMI introduction

Upload: gyles-beasley

Post on 03-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Presentation 18:RMI introduction

Page 2: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Goals of this lesson

• After this 35 min. lesson you will be:• Introduced to Java RMI• Ready to present RMI’s position in the Middleware

technology family on class

• You will not:• Be an RMI expert. More practice and theory is required

• Later in RMI:• We will look at more advanced issues• Activation, Callbacks, RMI over IIOP, tunneling

Page 3: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Outline

• Theory: (35x2 min.) • Introduction to Java RMI

• Group work: (35 min.)• Pro’s & con’s of Java RMI vs. SOAP

• When to use which technology…• Differences and equalities SOAP & RMI

• Plenum: (35 min.)• Discussion of group work

• One group will present … so prepare!

Page 4: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Java RMI

• In Java 1.0 object communication was confined to objects in one Virtual Machine (VM)

• Sun decided to introduce inter VM communication• Remote Method Invocation (RMI) from Java 1.1

supports communication between different VMs, potentially across the network

• Provides tight OO integration with Java• Work in heterogeneous environment (servers)• BUT ONLY with Java (so far) – so no language

transparency

Page 5: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Java RMI features

• Build on Java’s existing object model -> easy• No need for IDL – use Java interfaces• Arguments & return values can be all types specializing

java.io.Serializable or java.rmi.Remote• Dynamic loading of classes• Use of build-in Java Security Manager• Distributed Garbage Collection• Integrates with CORBA (later)• BUT NOT IN J2ME!!! (use SOAP)

• J2ME CDC has an RMI profile!

Page 6: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Java RMI position Middleware

•Transaction-Oriented•IBM CICS•BEA Tuxedo•Encina

•Message-Oriented•IBM MQSeries•DEC Message Queue•NCR TopEnd•(SOAP)

•RPC Systems•ANSA•Sun ONC•OSF/DCE•(SOAP)

•Object-Oriented•OMG/CORBA•DCOM•Java/RMI•(SOAP)

Page 7: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Wire Protocol

• Java RMI wire protocol: • JRMP (Java Remote Method Protocol) OR• IIOP (Internet Inter-ORB Protocol) for CORBA

connectivity• Both build on top of TCP/IP• JRMP more advanced than IIOP

• Other Java RMI specification implementors• Historic: BEA Weblogic, Object Voyager, NinjaRMI• Object Voyager’s was JRMP compatible• Others were not• IIOP compatibility can not be guaranteed

Page 8: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Local Java call vs. Java RMI call

CalledCalledCalledCalled

StubStub

StubStubStubStub

CallerCaller

CalledCalledCalledCalled

CallerCallerCallerCaller

Transport Layer (e.g. TCP or UDP)Transport Layer (e.g. TCP or UDP)Transport Layer (e.g. TCP or UDP)Transport Layer (e.g. TCP or UDP)

Similar to SOAP and CORBA – using Proxy

Page 9: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

InterfaceDefinition

Design

Server StubGeneration

Client StubGeneration

ServerCoding

ClientCoding

ServerRegistration

Development Steps – RMI & CORBA & SOAP

SOAP: WSDLSOAP: WSDLJava2WSDLJava2WSDL

WSDL2JAVAWSDL2JAVA

AXISSOAPAXISSOAP

RMI: JAVARMI: JAVA

J2SE JDKJ2SE JDK

Start with Server Interface Coding: JAVA

Start with Server Interface Coding: JAVA

rmiregistryrmiregistry

CORBACORBA

CORBA: IDLCORBA: IDL

CORBA: IDLCCORBA: IDLC

ORBORB

RMI: JAVA interfaceRMI: JAVA interface

C++, Java …C++, Java …

C++, Java …C++, Java …

RMI: rmicRMI: rmic

Page 10: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Team.wsdlTeam.wsdl

included ingeneratesreads

WSDL-compiler

Teamcl.hh

Teamcl.cc Teamsv.cc

Teamsv.hh

Stub Generation - in SOAP & CORBA

Team.idlTeam.idl

Page 11: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

package examples.hello;

import java.rmi.Remote; import java.rmi.RemoteException;

public interface Hello extends Remote {String sayHello() throws RemoteException;void someOther(String param) throws RemoteException;

}

rmic Compiler

HelloImpl_Stub.class HelloImpl_Skeleton.class

Stub Generation in Java RMI

NOTE: In fact, it is theHelloImpl that is used!NOTE: In fact, it is theHelloImpl that is used!Hello.javaHello.java

Must Extend fromInterface RemoteMust Extend fromInterface Remote

From RMI v. 1.2 no skeleton is generatedFrom RMI v. 1.2 no

skeleton is generated

From Java v. 1.5 no rmic comp is neededFrom Java v. 1.5 no rmic comp is needed

Page 12: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Java compiler - javac

Server

HelloClient.javaHelloClient.javaHelloImpl.javaHelloImpl.java

Java compiler - javacJava compiler - javac

Client

Hello.javaHello.java

included ingeneratesreads

rmic Compiler

RMI Client and ServerImplementation

HelloImpl_Stub.classHelloImpl_Stub.class HelloImpl_Skeleton.classHelloImpl_Skeleton.class

Page 13: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

package examples.hello;

import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.server.UnicastRemoteObject;

public class HelloImpl extends UnicastRemoteObject implements Hello {

public HelloImpl() throws RemoteException { super(); }

public String sayHello() {return "Hello World! ;

} public static void main(String args[]) { // Create and install a security manager //if (System.getSecurityManager() == null) { // System.setSecurityManager(new RMISecurityManager()); //} try { HelloImpl obj = new HelloImpl();

// Bind this object instance to the name "HelloServer" Naming.rebind("rmi://192.168.1.101/HelloServer", obj);

System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); } } }

Server object(HelloImpl.java)

Security manager needs a security policy – for access control (i.e. file system).

Security manager needs a security policy – for access control (i.e. file system).

Instantiate a new object and register (bind it) in the ”rmiregistry”

Instantiate a new object and register (bind it) in the ”rmiregistry”

Implement all methodsfrom interface Hello.javaImplement all methods

from interface Hello.java

Extend UnicastRemoteand implemet Hello Interfacet

Extend UnicastRemoteand implemet Hello Interfacet

”rmiregistry” is a simpel name server with methods to bind objects (bind/rebind) – and

Find them again (lookup) –> client

”rmiregistry” is a simpel name server with methods to bind objects (bind/rebind) – and

Find them again (lookup) –> client

Page 14: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

package examples.hello;

import java.rmi.Naming;import java.rmi.RemoteException;

public class HelloClient {

public static void main(String args[]) { try { Hello obj = (Hello)Naming.lookup("rmi://192.168.1.101/HelloServer"); String message = obj.sayHello(); System.out.println(message); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } }

}

”lookup” the HelloServer – and call Method sayHello() on Stub

”lookup” the HelloServer – and call Method sayHello() on Stub

Client object(HelloClient.java)

Remember – that the stuband skeleton classes get generated

by the ”rmic” compiler

Remember – that the stuband skeleton classes get generated

by the ”rmic” compiler

AND THAT’S IT!AND THAT’S IT!

Page 15: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Architecture

ServerClient

Stub RegistryInterfaces

Skeleton ActivationInterfaces

RMI Runtime (rmid,rmiregistry)

coded manuallycoded manually

rmic generatedrmic generated rmic generatedrmic generated

bindbindlookuplookup

Page 16: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Things to Remember

• No attributes / properties in Java Interfaces -> RMI does not support attributes

• Attributes must be represented as set and get operations by the designer

Page 17: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Things to remember II

• Parameter passing different than normal Java in single VM

• Atomic types are passed by value• Remote objects are passed by reference• Non-Remote objects are passed by value!• Reflexive: can return references to other objects• And of course – if an object is not on the client – the

ByteCode gets transferred (the class incl. implementation) – if a codebase is defined

Page 18: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Key Points

• True and beautiful OO Middleware• Easy to learn – for Java developers• No need for a separate IDL (use Java Interfaces)• Distributed Garbage Collection• ByteCode transfers automatically (if codebase is defined)• Works in heterogene environments – but only with Java• No build-in services (except for the registry)• Depends on other API’s – JavaSpaces, JINI, JDBC, EJB, JDO

etc. – integrated into a framework• Not ”firewall friendly”

Page 19: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Exercise

• Discuss for 20 minutes:• At your table 2 and 2• How Access Transparent is Java RMI?• How Location Transparent?• How about the other levels of transparency?• How is Heterogenity supported?• Where might Java RMI be used?• What deployment issues do you see?• Strengths & Weakness’ compared to Web services

• Plenum:• Let’s discuss your results

Page 20: Presentation 18: RMI introduction. Goals of this lesson After this 35 min. lesson you will be: Introduced to Java RMI Ready to present RMI’s position

Excerice 2

• Discuss for 15 minutes• In your assignment groups:• Map out and discuss how you may extend your code

design from assignment 2 – to include a Java RMI façade (server-side)

• Discuss what you should change in your Java clients to use Java RMI as well as Web services

• Discuss how you might get your .NET or C++ client to communicate with Java RMI

• Plenum:• Let’s discuss your results