Readme.txt 
----------

The "Juicer" is a simple application for stressing a Remote Method Invocation
(RMI) implementation.  It also serves as a good test of multithreading,
synchronization, and networking in java.  The Juicer tests the following:

1.  A server invoking calls on an applet's remote object.  These methods then
return references to new remote objects.

2.  Parallel execution of deep recursive calls passing large amounts of data and
remote references.

3.  Passing arrays of objects to Remote Methods.


-------------------------------------------------------- Running the juicer
Client as an application (Batch Mode)
--------------------------------------------------------

To run the juicer as an application, the following must be done...

1.  Do the following...

-On Solaris chmod +x run.sh run.sh <path to JAVAHOME(where the JDK is
	installed)>

-On Win95 run.bat <path to JAVAHOME(where the JDK is installed)>

(e.g.  run.sh /home/kgrucci/jdk1.1fcs)

	If you don't have permission to write to the current directory, then 
copy the contents of this directory to a work directory (e.g.  /tmp/juicer).
Then, cd to the work directory and do step 1.

	These batch files will take care of everything.  The client and server
will run on the local host.  The juicer will run through one iteration of
recursive calls and then will report Success(0) or Failure(1).  If an exception
is thrown at any time, the errors will be printed to the file, jlog.txt, in the
current directory.


------------------------------------------------- 
Running the juicer Client as an applet (GUI Mode) 
-------------------------------------------------

Startup 
-------

To run the juicer as an applet, you must do the following...

1.  Execute the following line on the server:  java AppleUserImpl 2.  On the
client execute:  appletviewer index.html (this is the web page that references
the applet.)  3.  Set the options on the user interface and press the "start"
button.  (See the option descriptions below.)

Any exceptions will be printed to the file, jlog.txt, in the current directory.

Feedback is displayed in a text area on the applet and through the standard
output and error streams on the server.


Options -------

The following options are available in configuring the juicer when run in applet
(GUI) mode...

1.  The "Number of Threads" that are specified will determine the number of
threads that will run in parallel on the server.

2.  The message array is the array of random integers that is passed in
recursive remote method calls.  The size of the message array can be set to
either...

	-a random integer (mod) (a value the user enters).  This allows a 
	random range of sizes to be used, i.e.  if a user enters 5, then 
	an array of size 0-4 will be created.

	-an exact integer value

3.  The recursion level determines how deep the recursive calls go before they
all return.  It can be set to either...

	-a random integer (mod) (a value the user enters).  This allows a 
	random range of levels to be used, i.e.  if a user enters 5, then a 
	level of 0-4 will be used.

	-an exact integer value

4.  The amount of iterations that occur within each Thread.  This can be set to
an exact integer value or to run forever.

5.  The juicer can be stopped by pressing the "Stop" button.  When this button
is pressed, each Server Thread will finish its current iteration and then exit.

6.  The juicer output display has a limit as to how much text it can hold.  The
"Clear" button will clear the display and allow for new output to be displayed.


