Santa Monica College
CS 84 --- Fall, 2002
Program #4

The goal of this assignment is to get you used to distributed computing by using RMI (Java folks) or COM (C++ folks).  In addition, this assignment will force you to install and verify your development environment for future SOAP-based distributed computing.

Part 1: Install and Verify SOAP Software
Navigate to the url: http://www.smcclasses.net/software.  Follow the instructions there for your programming language.  Java folks should install Tomcat, Apache SOAP and the Apache SOAP demo client and server.  C++ folks should install the Microsoft SOAP Toolkit, Version 3.0.  Based on whatever you install, turn in your compiled Demo client and server code so I can see it worked for you.  This installation is particularly tricky, so please follow the directions carefully and be patient.  There are many steps involved.  If the Internet is working slowly, you can acquire all the software off the Titan file server via \\titan\data\stahl_howard\cs84.

Part 2: ChatClient and ChatService
Following the class diagrams shown below, create a ChatService and ChatClient like the one demonstrated in class.  In both cases, all the software source code has been made available to you.  Your task is to get it running.  Turn in your compiled client and server code so I can see it worked for you.

Java C++
          ---------------
          | ChatService |
          ---------------
                /_\
                 |
                 |  
                 |
                 |
        -------------------
        | ChatServiceImpl |
        -------------------		
          ----------------
          | IChatService |
          ----------------
                 |
                 |
                 |
        -------------------
        |      chat.h     |
        -------------------	
                /_\
                 |
                 |
        -------------------
        |     chat_p.c    |
        -------------------	

ChatService extends java.rmi.Remote

public String echo( String message ) throws RemoteException;
public void oneway( String message ) throws RemoteException;

chat.h

void oneway( char[ ] message );
void echo( char[ ] message, char[ ] result );

ChatClient extends java.lang.Thread

public void run( );
public int menu( ) throws IOException;
public static void main( String args[] ) throws
       RemoteException,  NotBoundException,
       MalformedURLException
public void bindToServer( ) throws
       RemoteException,  NotBoundException,
       MalformedURLException
 

Java folks will need to create stubs for their service using rmic as well as start the rmiregistry (with a CLASSPATH that includes the generated stubs and skeletons for the ChatService) before running their client or server.  C++ folks need to rebuild their service using the supplied workspaces.  One workspace builds the C++ client and the other workspace builds the C++ server.

1