briefing on assignment one rmi programming n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Briefing on Assignment One & RMI Programming PowerPoint Presentation
Download Presentation
Briefing on Assignment One & RMI Programming

Loading in 2 Seconds...

play fullscreen
1 / 25

Briefing on Assignment One & RMI Programming - PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on

Briefing on Assignment One & RMI Programming. February 13, 2007. Lab One Organization. RMI Introduction A Simple Example Recap of RMI Components Assignment One Overview System Architecture Remarks Lab Exercise on RMI Reference. Introduction to RMI.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Briefing on Assignment One & RMI Programming' - honorato-burt


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
lab one organization
Lab One Organization
  • RMI
    • Introduction
    • A Simple Example
    • Recap of RMI Components
  • Assignment One
    • Overview
    • System Architecture
    • Remarks
  • Lab Exercise on RMI
  • Reference

CSIS0402

introduction to rmi
Introduction to RMI
  • Often consists of 2 separate programs: a server and a client
  • Provide the mechanism by which the server and the client communicate and pass information back and forth.
  • Make the communication like making a method call inside a single process.

CSIS0402

a simple rmi example

Client looks up the remote object by its name from the server’s registry and obtains a remote reference (i.e. the stub) of it.

Server creates a remote object , registers the service to RMIRegistry and passes the object reference to the registry

Server

Client

The stub de-marshals the return value and returns it to the client.

The skeleton gets the return value back from the server object, marshals the return value and sends to the stub.

The skeleton de-marshals the data and makes the method call on the actual server object.

Client invokes a method on the stub

The stub either creates a socket connection to the skeleton on the server or reuses a pre-existing connection. It marshals all the information associated to the method call, with name of method and arguments and sends to the skeleton.

A Simple RMI Example

RMIRegistry

Skeleton

Stub

Network

CSIS0402

recap of rmi components
Recap of RMI Components
  • RMIRegistry
    • Runs on a central server and functions like a phone book
    • Maps logical names to actual servers so that client programs can easily locate and use appropriate server applications
  • Stub
    • Acts as the local representative for the remote object
    • Implements the same remote interface as the remote object
    • Maintains a socket connection to the remote object’s JVM automatically
    • Responsible for marshalling and de-marshalling data on the client side

CSIS0402

slide6
Skeleton
    • A server-side object responsible for
      • maintaining network connections with the stub
      • marshalling and de-marshaling data on the server side
  • Stubs and Skeletons are generated from the implementation class files by a command-line application called rmic

CSIS0402

assignment one

Assignment One

Overview

CSIS0402

a simple file hosting system onlinedrive v1 0
A Simple File Hosting SystemOnlineDrive v1.0
  • Offer a sort of "network storage" for personal backup, file access or file distribution
  • Support three sharing options
    • Personal
      • Can be viewed and downloaded by the file owner only.
    • Group
    • Public
  • In Assignment One, you only need to develop the GUI and the simplest mode of sharing: Personal.
  • You are required to use RMI to handle ALL communications between server and clients.

CSIS0402

slide9
GUI
  • From Java.Swing:
  • JFrame
  • JSplitPane
  • - JTree
  • - JTextArea
  • - JButton
  • - JLabel

CSIS0402

system architecture
System Architecture
  • OnlineDriveServer.java
  • Server interface that describes the behavior of the server

implements

OnlineDriveServerImp.java- Class that implement the server functions

OnlineDriveClientImp.java

- Client application that maintains the Chatroom functionalilities

Server side components Client side component

CSIS0402

remarks
Remarks
  • Class names to be used…
    • Server class: OnlineDriveServerImp.java
    • Client class: OnlineDriveClientImp.java
  • RMIC for server
    • To generate stubs and skeletons
  • Make sure…
    • your server can be started by
      • > java <options> OnlineDriveServerImp
    • your client can be started by
      • > java <options> OnlineDriveClientImp <hostname>

CSIS0402

lab exercise on rmi

Lab Exercise on RMI

CountServer

CSIS0402

countserver overview
CountServer Overview
  • A RMI application consists of
    • a RMI server and
    • a client swing application.
  • Client inputs a message and sends to the server.
  • Server receives the message, count the number of characters and return the count to the client.
  • Client displays the count on the GUI.

CSIS0402

system architecture1

CountServer interface that describes the behavior of the server

extends

Class that implements the server functions

System Architecture

CountServer.java

CountClientImp.java

CountServerImp.java

Swing client application that captures user’s input, sends to the server and displays server’s reply to the GUI.

CSIS0402

countserver java interface class of the server
CountServer.java(Interface class of the server)

Exception thrown by RMI to signal that something unforeseen has happened at the network level

import java.rmi.*;

public interface CountServer extends Remote {

public int countMsg(String msg) throws RemoteException;

}

Return types of the remote method

CSIS0402

countserverimp java implementation class of the server
CountServerImp.java(Implementation class of the server)

Automatically relates the instance into the RMI runtime and listens for remote method calls.

import java.rmi.*;

import java.rmi.server.*;

public class CountServerImp extends UnicastRemoteObject

implements CountServer {

public int countMsg(String msg) throws RemoteException {

return msg.length();

}

Return the string to the remote client

CSIS0402

countserverimp java 2 implementation class of the server
CountServerImp.java(2)(Implementation class of the server)

public static void main( String args[] ) {

CountServerImp server = new CountServerImp();Naming.rebind( "//localhost/CountServer",server ); …

}

Create a CountServer object to provide services for clients

Static method of the naming registry class to bind the server object to the specified host with the name ‘CountServer’

CSIS0402

countclientimp java implementation class of the client
CountClientImp.java(Implementation class of the client)

Swing Application

import java.rmi.*;

public class CountClientImp extends JFrame {

public CountClientImp( String hostname ) {

serverLookup();

}

private void serverLookup(){

try{

server = (CountServer)Naming.lookup( "//localhost/CountServer" );

} catch(Exception e){

System.err.println(e);

}

}

Call the static method of the Naming class to look up the remote server on the requested host and the specified server name

Get a handle to the remote object

CSIS0402

countclientimp java 2 implementation class of the client
CountClientImp.java(2)(Implementation class of the client)

JButton sendButton = new JButton(“Count Message");

sendButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e){ sendMsgToServer();

}

…private void sendMsgToServer(){

String msg = tArea.getText();

try{

Integer count = (Integer) server.countMsg(msg);

msgCount = Integer.toString(count);

tField.setText(msgCount);

}catch(RemoteException re) {

System.err.println(re);

}

}

Register the action listener for send button

Remotely invoke the RMI Server and send the message to it

CSIS0402

countclientimp java 3 implementation class of the client
CountClientImp.java (3)(Implementation class of the client)

public static void main( String args[] ) {

try{

CountClientImp client = new CountClientImp();

}catch( Exception e ){

e.printStackTrace();

}

}

Create a CountClientImp object

CSIS0402

lab exercise how to start
Lab Exercise - How to start
  • Download the lab1.zip from the course homepage
  • Compile the files by
    • javac *.java
  • Generate stub and skeleton
    • rmic CountServerImp
  • Start the RMI registry (keep on running)
    • rmiregistry

CSIS0402

lab exercise how to start 2
Lab Exercise - How to start(2)
  • Start the RMI Server in another command prompt
    • java CountServerImp
  • Start the client in another command prompt and connect to the server
    • java CountClientImp

CSIS0402

lab exercise how to start 3
Lab Exercise - How to start(3)
  • Test the application
    • Type a message in the text area on the Client GUI, click “Count Message”.
    • Check if the count is returned and displayed on the GUI.

CSIS0402

reference 1
Reference (1)
  • Swing (for the GUI) in Java Tutorial
    • http://java.sun.com/docs/books/tutorial/uiswing
      • Getting start with Swing
        • http://java.sun.com/docs/books/tutorial/uiswing/start/index.html
      • Layout Manager
        • http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html
      • Event Listener
        • http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

CSIS0402

reference 2
Reference (2)
  • RMI in Java Tutorial
    • http://java.sun.com/docs/books/tutorial/rmi/overview.html
  • RMI course from jGuru
    • http://developer.java.sun.com/developer/onlineTraining/rmi/RMI.html#JavaRMIArchitecture

CSIS0402