[go: up one dir, main page]

0% found this document useful (0 votes)
27 views19 pages

Java RMI: CS-328 Internet Programming

This document provides an overview of Java RMI (Remote Method Invocation). It discusses how RMI allows objects to exist remotely on different machines and be invoked through method calls like local objects. It describes the key components of RMI including stubs, skeletons, remote references, and the transport layer. It also outlines the general steps to create and run a basic RMI application and discusses features like the RMI registry and differences between RMI in JDK 1.1 versus Java 2.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views19 pages

Java RMI: CS-328 Internet Programming

This document provides an overview of Java RMI (Remote Method Invocation). It discusses how RMI allows objects to exist remotely on different machines and be invoked through method calls like local objects. It describes the key components of RMI including stubs, skeletons, remote references, and the transport layer. It also outlines the general steps to create and run a basic RMI application and discusses features like the RMI registry and differences between RMI in JDK 1.1 versus Java 2.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Java RMI

CS-328 Internet Programming

In the Good Old Days...


Only local objects existed

My Machine

My Object

Todays World...
Network and Distributed Objects

My Machine Local Objects

Remote Machine Remote Objects

Why not just use sockets?

sockets programming is tedious error prone for implementing complex protocols best left to the experts

Java RMI allows...

provide user with a thin client

allows good performance on lowend workstations

run server on high end hardware


maximize $ investment over many clients server remote from client

Distributed network object

What RMI is...and isnt

Java only solution to the problem of distributed object computing Unlike CORBA it is not language independent Isnt meant to replace CORBA Good for java only solutions, not easy to integrate with legacy code

What RMI is...and isnt (cont.)

underlying wire protocol (object serialization) is not an open standard; the good news is that since JDK 1.2 it will optionally use the IIOP Protocol (RMI Over IIOP) Since it is a Java only solution objects are at the mercy of the java interpreter and JITs for run time performance

Architecture
Client Server

Stubs

Skeletons

Remote Reference

Remote Reference Transport

The General Idea

Instantiate an object on another machine Invoke methods on the remote object

The parts...

Client - user interface Server - data source Stubs


marshals argument data (serialization) unmarshals results data (deserialization)

Skeletons (not reqd w/Java 2)


unmarshals argument data marshals results data

The parts... (cont.)

Remote Reference Layer


provides a RemoteRef object that represents the link to the remote service implementation object. encodes and decodes the on-wire protocol implements the remote object protocols

Transport layer

The Transport Layer makes the connection between JVMs. All connections are stream-based network connections that use TCP/IP. handles the underlying socket handling required for communications

sets up and maintains connections communications related error handling

The steps...

Create the Interface to the server Create the Server Create the Client Compile the Interface (javac) Compile the Server (javac) Compile the Client (javac) Generate Stubs and Skeletons (rmic)

To run

Start the RMI registry

rmiregistry is in the JSDK bib directory

Start the RMI Server Start the RMI Client let er rip...

RMI Registry

The RMI Registry is a naming service provided with the JDK as a teaching tool or for a small number of Remote Objects Uses port 1099 as its default port Can be considered to be a reference implementation runs out of steam above a 100 objects runs on same machine as the remote object

RMI Registry (more)

Use another naming service


J2EE uses JNDI and Directory Services to provide a more robust naming service Silverstream uses JNDI with its own ServiceProvider and repository for RMI

Activatable Objects

Added in Java 2 SDK Standard RMI objects exported as UnicastRemoteObject must run continuously instead by implementing java.rmi.activation.Activatable the object can be deactivated and reactivated remotely when a method call is made Must use the rmid server process to take advantage of this capability

Java Remote Method Protocol (JRMP)

Proprietary, stream-based protocol that is only partially specified is now in two versions
JDK 1.1 version of RMI and required the use of Skeleton classes on the server Java 2 SDK. It has been optimized for performance and does not require skeleton classes

some implementations, such as BEA Weblogic and NinjaRMI dont use JRMP instead use their own wire level protocol

Other JDK 1.1 and Java 2 Differences

With the Java 2 SDK


Service interfaces are not required to extend from java.rmi.Remote Service methods do not necessarily throw RemoteException.

Java 2 JSDK 1.3

RMI-IIOP

instead of using JRMP RMI will use Internet Inter-Orb Protocol (IIOP) IIOP is the wire protocol used for communication between Common Object Request Broker Architecture (CORBA) clients and servers CORBA is a distributed object technology from the Object Management Group (OMG)

800 member industry group vendor neutral architecture more on CORBA later

sets the direction for RMI/CORBA Integration

You might also like