provided.rmiUtils.classServer
Class ClassFileServer
java.lang.Object
provided.rmiUtils.classServer.ClassServer
provided.rmiUtils.classServer.ClassFileServer
- All Implemented Interfaces:
- java.lang.Runnable
public class ClassFileServer
- extends ClassServer
The ClassFileServer implements a ClassServer that
reads class files from the file system. See the
doc for the "Main" method for how to run this
server.
Field Summary |
private java.lang.String |
classpath
path to the default package. |
Constructor Summary |
ClassFileServer(int port,
java.lang.String classpath)
Constructs a ClassFileServer. |
Method Summary |
byte[] |
getBytes(java.lang.String path)
Returns an array of bytes containing the bytecodes for
the class represented by the argument path. |
static void |
main(java.lang.String[] args)
This method is for testing purposes only. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
classpath
private java.lang.String classpath
- path to the default package.
ClassFileServer
public ClassFileServer(int port,
java.lang.String classpath)
throws java.io.IOException
- Constructs a ClassFileServer.
- Parameters:
classpath
- the classpath where the server locates classes
- Throws:
java.io.IOException
getBytes
public 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.
- Specified by:
getBytes
in class ClassServer
- 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
main
public static void main(java.lang.String[] args)
- This method is for testing purposes only.
In general, an application will instantiate its own
ClassFileServer instance.
Main method to create the class server that reads
class files. This takes two command line arguments, the
port on which the server accepts requests and the
root of the classpath. To start up the server:
java ClassFileServer
The codebase of an RMI server using this webserver would
simply contain a URL with the host and port of the web
server (if the webserver's classpath is the same as
the RMI server's classpath):
java -Djava.rmi.server.codebase=http://zaphod:2001/ RMIServer
You can create your own class server inside your RMI server
application instead of running one separately. In your server
main simply create a ClassFileServer:
new ClassFileServer(port, classpath);