## org.opencyc.webserver
Class WebServer

    java.lang.Object
      |
      +--java.lang.Thread
            |
            +--org.opencyc.webserver.WebServer

All Implemented Interfaces:
  java.lang.Runnable

public class WebServer
extends java.lang.Thread

Inner Class Summary
`protected class` `WebServer.Task` Class Task processes a single HTTP request.

Field Summary
`protected static int` `CACHE_CAPACITY` File cache capacity.
`static WebServer` `current` Singleton WebServer instance.
`protected java.lang.String` `cycHost` Cyc HTML host.
`protected int` `cycPort` Cyc HTML port.
`protected static int` `DEFAULT_CYC_PORT` Default Cyc base port.
`protected static java.lang.String` `DEFAULT_DIR` Default directory to serve files from on non-Windows OS.
`protected static int` `DEFAULT_PORT` Default HTTP port.
`protected static java.lang.String` `DEFAULT_WIN_DIR` Default directory to serve files from on Windows.
`protected java.util.ArrayList` `dirs` Directories to serve files from.
`protected static java.util.Hashtable` `fileCache` File cache to improve file serving performance.
`protected java.util.HashMap` `map` Map from String (jar root) to JarFile[] (jar class path).
`protected static long` `nbrCacheHits` Number of files served from this web server that were found in the cache.
`protected static long` `nbrFilesServed` Number of files served from this web server.
`protected int` `port` Webserver HTTP port.
`protected java.net.ServerSocket` `server` Server socket for accepting connections.
`protected boolean` `traceRequests` Requests flag.
`protected boolean` `trees` Expand jar tress.

Fields inherited from class java.lang.Thread
`MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

Constructor Summary
`WebServer()` Constructs a WebServer object.

Method Summary
`void` `clearFileCache()` Administrative method that clears the file cache.
`java.util.ArrayList` `getDirs()` Administrative accessor method that obtains list of directories from which files are served.
`long` `getNbrCacheHits()` Administrative accessor method that obtains number of files served from cache.
`long` `getNbrFilesServed()` Administrative accessor method that obtains number of files served.
`static void` `main(java.lang.String[] args)` Provides the command line interface for creating an HTTP server.
`void` `run()` Just keep looping, spawning a new thread for each incoming request.
`void` `setDirs(java.util.ArrayList dirs)` Administrative method that updates the list of directories from which files are served.

Methods inherited from class java.lang.Thread
`activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### current

    public static WebServer current

  Singleton WebServer instance.

### DEFAULT_PORT

    protected static int DEFAULT_PORT

  Default HTTP port.

### DEFAULT_CYC_PORT

    protected static int DEFAULT_CYC_PORT

  Default Cyc base port.

### DEFAULT_DIR

    protected static java.lang.String DEFAULT_DIR

  Default directory to serve files from on non-Windows OS.

### DEFAULT_WIN_DIR

    protected static java.lang.String DEFAULT_WIN_DIR

  Default directory to serve files from on Windows.

### CACHE_CAPACITY

    protected static final int CACHE_CAPACITY

  File cache capacity.

### fileCache

    protected static java.util.Hashtable fileCache

  File cache to improve file serving performance.

### nbrFilesServed

    protected static long nbrFilesServed

  Number of files served from this web server.

### nbrCacheHits

    protected static long nbrCacheHits

  Number of files served from this web server that were found in the cache.

### server

    protected java.net.ServerSocket server

  Server socket for accepting connections.

### dirs

    protected java.util.ArrayList dirs

  Directories to serve files from.

### map

    protected java.util.HashMap map

  Map from String (jar root) to JarFile[] (jar class path).

### port

    protected int port

  Webserver HTTP port.

### cycHost

    protected java.lang.String cycHost

  Cyc HTML host.

### cycPort

    protected int cycPort

  Cyc HTML port.

### trees

    protected boolean trees

  Expand jar tress.

### traceRequests

    protected boolean traceRequests

  Requests flag.

Constructor Detail

### WebServer

    public WebServer()
              throws java.io.IOException

  Constructs a WebServer object.
  Parameters:
    `port` - the port to use
    `directories` - the directory to serve files from
    `trees` - true if files within jar files should be served up
    `traceRequests` - true if client's request text should be logged.
  Throws:
    `java.io.IOException` - if the listening socket cannot be opened, or problem opening jar files.

Method Detail

### getDirs

    public java.util.ArrayList getDirs()

  Administrative accessor method that obtains list of directories from which files are served.

### setDirs

    public void setDirs(java.util.ArrayList dirs)
                 throws java.io.IOException

  Administrative method that updates the list of directories from which files are served.

### getNbrFilesServed

    public long getNbrFilesServed()

  Administrative accessor method that obtains number of files served.
  Returns:
    The number of files served.

### getNbrCacheHits

    public long getNbrCacheHits()

  Administrative accessor method that obtains number of files served from cache.
  Returns:
    The number of files served from the cache.

### clearFileCache

    public void clearFileCache()

  Administrative method that clears the file cache.

### main

    public static void main(java.lang.String[] args)

  Provides the command line interface for creating an HTTP server. The properties are:

       org.opencyc.webserver.port=<HTTP listening port>

  which defaults to 80.

       org.opencyc.webserver.cycPort=<Cyc connection port>

  which defaults to 3600.

       org.opencyc.webserver.dirs=<path>;<path> ... ;<path>

  with the argument enclosed in quotes if any path contains an embedded space. The default directory on Windows is C: and the default on other systems is / the default can be overridden with this property. By default, all files under this directory (including all subdirectories) are served up via HTTP. If the pathname of a file is path relative to the top-level directory, then the file can be downloaded using the URL

       http://host:port/path

  Caching of file contents is performed.

       org.opencyc.util.log=all

  If the all value is given, then all attempts to download files are output.

       org.opencyc.webserver.traceRequests

  If this property has any value, then the client HTTP requests are output.

       org.opencyc.webserver.trees

  This property can be used to serve up individual files stored within jar files in addition to the files that are served up by default. If the property has any value, the server finds all jar files in the top-level directory (not in subdirectories). For each jar file, if the name of the jar file is name.jar, then any individual file named file within that jar file (or within the jar or zip files referenced transitively in the Class-Path manifest attribute, can be downloaded using a URL of the form:

       http://host:port/name/file

  When this property has any value, an open file descriptor and cached information are held for each jar file, for the life of the process.
  Parameters:
    `args` - an unused array of command line arguments.

### run

    public void run()

  Just keep looping, spawning a new thread for each incoming request.
  Overrides:
    `run` in class `java.lang.Thread`