Package javassist.tools.web

# Class Webserver

java.lang.Object
javassist.tools.web.Webserver

Direct Known Subclasses:
  `AppletServer`

public class Webserver extends Object
A web server for running sample programs.

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.

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

Fields
Modifier and Type
Field
Description
`String`
`debugDir`
If this field is not null, the class files taken from `ClassPool` are written out under the directory specified by this field.
`String`
`htmlfileBase`
The top directory of html (and .gif, .class, ...) files.

## Constructor Summary

Constructors
Constructor
Description
`Webserver(int port)`
Constructs a web server.
`Webserver(String port)`
Constructs a web server.

## Method Summary

Modifier and Type
Method
Description
`void`
`addTranslator(ClassPool cp, Translator t)`
Adds a translator, which is called whenever a client requests a class file.
`void`
`doReply(InputStream in, OutputStream out, String cmd)`
Proceses a HTTP request from a client.
`void`
`end()`
Closes the socket.
`void`
`logging(String msg)`
Prints a log message.
`void`
`logging(String msg1, String msg2)`
Prints a log message.
`void`
`logging(String msg1, String msg2, String msg3)`
Prints a log message.
`void`
`logging2(String msg)`
Prints a log message with indentation.
`static void`
`main(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 Details

### debugDir

public 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 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 Details

### Webserver

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

Parameters:
  `port` - port number
Throws:
  `IOException`

### Webserver

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

Parameters:
  `port` - port number
Throws:
  `IOException`

## Method Details

### main

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

Throws:
  `IOException`

### setClassPool

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

### addTranslator

public void addTranslator(ClassPool cp, Translator t) throws NotFoundException, CannotCompileException
Adds a translator, which is called whenever a client requests a class file.

Parameters:
  `cp` - the `ClassPool` object for obtaining a class file.
  `t` - a translator.
Throws:
  `NotFoundException`
  `CannotCompileException`

### end

public void end() throws IOException
Closes the socket.

Throws:
  `IOException`

### logging

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

### logging

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

### logging

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

### logging2

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

### run

public void run()
Begins the HTTP service.

### doReply

public void doReply(InputStream in, OutputStream out, String cmd) throws 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:
  `IOException`
  `BadHttpRequest`