MOWS Modules

This document describes the modules available in MOWS. The URL of this document is:

1. General

A module in MOWS is an encapsulated object that can perform some tasks. MOWS dynamically loads a set of modules that are specified in its configuration file. These modules determine the behaviour and functionality of MOWS. The organization of the modules used in MOWS was designed after that of Roxen's. Modules are grouped into a set of basic module types, each characterizing a particular aspect of the server functionality. Each module, which is derived from one of these basic module types, hides its specific implementation and it is just seen as an instance of its basic module type to others.

Modules may be loaded from the local system or from a remote system. When a remote module is specified in the configuration file, it is fetched from the specified remote host using the HTTP protocol. Therefore, the remote system must make this module available by acting as a web server. When trying to load a module or code from a remote system, MOWS first looks into its local system if that code exists. If it does not exist, the remote code will be loaded. Otherwise, the local code will be loaded instead.

Remote loading of modules enables MOWS to place the latest modules at a node MOWS server and to let client MOWS servers load these modules remotely, thereby making the installation and updating of MOWS software simple.

2. Table of Modules

The following shows the list of available modules.
Module NameTypeUse
CGIDirectory LocationMod treats files in the specified directory as CGI programs
CGIExtension ExtensionMod treats files with the specified extensions as CGI programs
ContentType ContentTypeMod determines the content types of requested resources
Directory DirectoryMod enables browsing of directory lists
DiskCache DiskCacheMod caches proxied files on disk
FileSystem LocationMod gets the requested file
HTMLFilter FilterMod parses additional tags in HTML files
HTTPProxy LocationMod proxies for clients to retrieve remote files
JMEDirectory LocationMod treats files in the specified directory as JME programs
Logging LoggingMod logs the access information for requests
MapExtension ExtensionMod treats files with the specified extensions as image map files
MemoryCache MemoryCacheMod caches local files in memory
Redirection RedirectionMod redirects requests in the preprocessing phase
UserDatabase UserDatabaseMod manages user information
UserFileSystem LocationMod maps the matching requests to their user's file system

The basic syntax of loading a module module is:

   (moduleModule mod1
      (param1 value1)
      (param2 value2)
The above specification will load moduleModule from the local system and set the parameters param1 and param2 with the given values value1 and value2. To load a module from a remote system, the module name must be given in full along with its host name as:
   (//remote-module-host/moduleModule mod1
      (param1 value1)
      (param2 value2)

The following shows an example of the two cases:
loading FileSystemModule locally:

   (FileSystemModule fs1
      (Mount /)
      (Path /usr/local/www/data)
      (Welcome index.html)
      (HTAccess On))
loading FileSystemModule from module-host host remotely:
   (//module-host/mows.module.FileSystemModule fs1
      (Mount /)
      (Path /usr/local/www/data)
      (Welcome index.html)
      (HTAccess On))
In the latter, host module-host must make its FileSystemModule available at its URL http://module-host/mows/module/FileSystemModule.class.

version: 19970122