classUtils.javassist.web
Class Webserver

java.lang.Object
  extended by classUtils.javassist.web.Webserver
Direct Known Subclasses:
AppletServer, DemoServer

public class Webserver
extends java.lang.Object

A web server for Javassist.

This enables a Java program to instrument class files loaded by web browsers for applets. Since the (standard) security manager does not allow an applet to create and use a class loader, instrumenting class files must be done by this web server.

Programmers can register a ClassPool object for instrumenting class files when they are sent to web browsers.

Note: although this class is included in the Javassist API, it is provided as a sample implementation of the web server using Javassist. Especially, there might be security flaws in this server. Please use this with YOUR OWN RISK.


Field Summary
 java.lang.String debugDir
          If this field is not null, the class files taken from ClassPool are written out under the directory specified by this field.
 java.lang.String htmlfileBase
          The top directory of html (and .gif, .class, ...) files.
 
Constructor Summary
Webserver(int port)
          Constructs a web server.
Webserver(java.lang.String port)
          Constructs a web server.
 
Method Summary
 void doReply(java.io.InputStream in, java.io.OutputStream out, java.lang.String cmd)
          Proceses a HTTP request from a client.
 void end()
          Closes the socket.
 void logging(java.lang.String msg)
          Prints a log message.
 void logging(java.lang.String msg1, java.lang.String msg2)
          Prints a log message.
 void logging(java.lang.String msg1, java.lang.String msg2, java.lang.String msg3)
          Prints a log message.
 void logging2(java.lang.String msg)
          Prints a log message with indentation.
static void main(java.lang.String[] args)
          Starts a web server.
 void run()
          Begins the HTTP service.
 void setClassPool(ClassPool loader)
          Requests the web server to use the specified ClassPool object for obtaining a class file.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

debugDir

public java.lang.String debugDir
If this field is not null, the class files taken from ClassPool are written out under the directory specified by this field. The directory name must not end with a directory separator.


htmlfileBase

public java.lang.String htmlfileBase
The top directory of html (and .gif, .class, ...) files. It must end with the directory separator such as "/". (For portability, "/" should be used as the directory separator. Javassist automatically translates "/" into a platform-dependent character.) If this field is null, the top directory is the current one where the JVM is running.

If the given URL indicates a class file and the class file is not found under the directory specified by this variable, then Class.getResourceAsStream() is called for searching the Java class paths.

Constructor Detail

Webserver

public Webserver(java.lang.String port)
          throws java.io.IOException
Constructs a web server.

Parameters:
port - port number
Throws:
java.io.IOException

Webserver

public Webserver(int port)
          throws java.io.IOException
Constructs a web server.

Parameters:
port - port number
Throws:
java.io.IOException
Method Detail

main

public static void main(java.lang.String[] args)
                 throws java.io.IOException
Starts a web server. The port number is specified by the first argument.

Throws:
java.io.IOException

setClassPool

public void setClassPool(ClassPool loader)
Requests the web server to use the specified ClassPool object for obtaining a class file.


end

public void end()
         throws java.io.IOException
Closes the socket.

Throws:
java.io.IOException

logging

public void logging(java.lang.String msg)
Prints a log message.


logging

public void logging(java.lang.String msg1,
                    java.lang.String msg2)
Prints a log message.


logging

public void logging(java.lang.String msg1,
                    java.lang.String msg2,
                    java.lang.String msg3)
Prints a log message.


logging2

public void logging2(java.lang.String msg)
Prints a log message with indentation.


run

public void run()
Begins the HTTP service.


doReply

public void doReply(java.io.InputStream in,
                    java.io.OutputStream out,
                    java.lang.String cmd)
             throws java.io.IOException,
                    BadHttpRequest
Proceses a HTTP request from a client.

Parameters:
out - the output stream to a client
cmd - the command received from a client
Throws:
java.io.IOException
BadHttpRequest