Package nathan.middleware

Interface Summary
Grade Grade Interface is the interface used to access grade objects in the application.
MessageType MessageType Interface contains the type of messages that can be sent in the application.
Student Interface for a student.
StudentList Student List Interface
 

Class Summary
Client Client is the client portion of the RMI application.
ClientCommunication Client Communication is used to send and receive messages from the remote object.
Dispatcher Dispatcher is used call call the correct method on the skeleton of the remote object.
FrontEnd FrontEnd is the front end used for fault tolerance by implementing active replication of the objects in the system.
FrontEndHandler FrontEndHandler creates new threads to handle the messages used for active replication.
GradeFactory GradeFactory creates new instances of grade objects.
GradeImpl The implementation of the Grade interface used to store a students grade.
Message The messages to be sent in between the client and the server.
MessageID MessageID is used to create logical timestamps for messages.
Naming Naming is used to communicate with the Registry.
ObjectID ObjectID is used to create unique IDs for the object that are bound in the registry.
Registry Registry is used to bind a remote object and allow clients to lookup objects to use the service provided by those objects.
To run the registry: Registry [Port Number]

Port number is the port number that the Registry will listen to.
RegistryHandler RegistryHandler handles the message that are sent to the registry.
RegistryMessage RegistryMessage is the object that is sent to the registry which contains the registry messages.
RemoteObjectMapping RemoteObjectMapping is used to store information about the replicated objects in the system, along with information about the front end to the active replication manager.
RemoteObjectReference RemoteObjectReference is used to represent a remote object in the distributed system.
RemoteReferenceModuleClient The remote reference module for the client application.
RemoteReferenceModuleServer ServerRemoteReference maps remote references to local references.
Server ServerApplication starts the remote object so the client can call the remote methods on the object.

To start the server: Server requires the arguments [Object Name] [Registry IP] [Registry Port] [Server Port].
Object name is the name to be used for the remote object.
Registry Ip is the ip address of the registry the server will use to bind the object.
Registry port is the port number that registry is listening on.
Server port is the port number which the server will listen on.
ServerCommunication ServerCommunication creates a coomunication module to handle request from the client by creating new threads of the type ServerCommunicationHandler to handle the communication.
ServerCommunicationHandler ServerCommunicationHandler is used to create a new thread to handle message from the client.
StubSkeletonGenerator The program then generates a stub and a skeleton for the middleware system.

To run the application: SubSkeletonGenerator [Class Name] [Interface Name]

Class name is the name of the class to generate the stubs and skeletons for.
Interface name is the name of the Interface that the stub will implement.

A sample of how run the StubSkeletonGenerator is:

java nathan/middleware/StubSkeletonGenerator nathan.middleware.StudentListImpl nathan.middleware.StudentList
StudentFactory StudentFactory is used to create a new student by reading in the users input from the terminal then set all of the attributes for the student.
StudentImpl The implementation class for Student Interface.
StudentListImpl The implementation class for the StudentList.
StudentListImplSkeleton  
StudentListImplStub