jaga.external
Class ClassServer

java.lang.Object
  |
  +--jaga.external.ClassServer
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
ClassFileServer

public abstract class ClassServer
extends java.lang.Object
implements java.lang.Runnable

ClassServer is an abstract class that provides the basic functionality of a mini-webserver, specialized to load class files only. A ClassServer must be extended and the concrete subclass should define the getBytes method which is responsible for retrieving the bytecodes for a class.

The ClassServer creates a thread that listens on a socket and accepts HTTP GET requests. The HTTP response contains the bytecodes for the class that requested in the GET header.

For loading remote classes, an RMI application can use a concrete subclass of this server in place of an HTTP server.

See Also:
ClassFileServer

Method Summary
abstract  byte[] getBytes(java.lang.String path)
          Returns an array of bytes containing the bytecodes for the class represented by the argument path.
 void run()
          The "listen" thread that accepts a connection to the server, parses the header to obtain the class file name and sends back the bytecodes for the class (or error if the class is not found or the response was malformed).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getBytes

public abstract byte[] getBytes(java.lang.String path)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
Returns an array of bytes containing the bytecodes for the class represented by the argument path. The path is a dot separated class name with the ".class" extension removed.
Returns:
the bytecodes for the class
Throws:
java.lang.ClassNotFoundException - if the class corresponding to path could not be loaded.
java.io.IOException - if error occurs reading the class

run

public void run()
The "listen" thread that accepts a connection to the server, parses the header to obtain the class file name and sends back the bytecodes for the class (or error if the class is not found or the response was malformed).
Specified by:
run in interface java.lang.Runnable