Introduction to MOWS

This document summarizes the basic features of MOWS (0.9a1) The URL of this document is:

1. General

MOWS is a distributed web and cache server written in Java. It is built from modules that can be loaded from the local system or from a remote system. The organisation of these modules was designed after that of Roxen's. Each module has its basic type which characterizes its functionality. Users may extend, replace, or omit some modules to configure the behavior of the MOWS server.

MOWS supports features of a typical web and cache server such as basic authentication, user file system, CGI, image map, HTML filtering, and proxy. The proxy feature enables MOWS to cooperate with other MOWS and Harvest object caches for distributed caching. They can be organized in a hierarchy with siblings and parents. If a server does not find the requested file in its local cache, it asks its siblings and parents for the file by using the ICP protocol (based on UDP). If one of them has the file, it will be fetched from this server. In addition to these features, MOWS supports its own Java service extension interface called JME. JME is similar to CGI, however, programs to be executed through JME are not limited to those residing in the local file system. They may be fetched from a remote system and executed locally. To allow a remote directory to be treated as a JME directory, its name must be specified with the remote host name in the configuration. Unlike CGI programs, JME programs are executed by threads rather than processes. JME offers a simple and efficient alternative for CGI.

Currently, MOWS must be configured in a configuration file. The configuration file specifies which modules to be loaded and what parameters to be used. To load a module from the local system, its name can be directly used. To load a module from a remote system, its full name must be constructed by prefixing the module name by the remote host name.

Remote loading of both modules and JME code makes software distribution simpler, where the latest version of modules and code can be loaded from a node server just as Java applets are loaded from a remote server. For both module and JME code loading, the remote host name must be explicitly specified in the configuration file. The loading of modules and JME code from a remote system does not happen arbitrarily as opposed to applet loading. For this reason, security issues are not seriously considered for the current implementation. However, these issues are important for the integrity of distributed systems and they will be explored in the next version.

Currently supported features and planned features of MOWS are summarized in the Features of MOWS page.

2. System Requirement

MOWS requires Sun's Java Developers Kit (JDK) 1.0.2 or its compatible environment. More information on JDK and its supporting platforms can be obtained from JavaSoft.

3. Modules

The table below shows the currently 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

4. Configuration

The configuration of MOWS is specified in a simple ASCII file. An example of the configuration is given below:

(MOWSCenter 1.0
  (MOWS main
     (Port 8080)
     (LoggingModule mainlog
        (Log log/main.log))
     (FileSystemModule fs1
        (Mount /)
        (Path /users/mows/www/data)
        (HTAccess On)
        (Welcome index.html welcome.html))
     (FileSystemModule fs2
        (Mount /icons)
        (Path /users/mows/www/icons))
     (CGIDirectoryModule cgi1
        (Mount /cgi-bin)
        (Path /users/mows/www/cgi-bin))
     (MemoryCacheModule memcache1
        (Swap 10000000)
        (Size 50000))))

5. Download

The current version is 09a1. The following resources are available for downloading:

The previous version 09a is still available. The above files may be retrieved from the following anonymous ftp server as well.

6. Running

After configuring MOWS in the configuration file etc/center.conf, MOWS can be started by using the start script provided or by running mows.MOWSCenter from the Java interpreter. More information on how to run MOWS can be found in the Running MOWS page

7. Applications

Several applications of MOWS have been demonstrated. They are briefly described in the Application page.

8. API

The API documentation of MOWS is availabe online.

9. Troubleshooting

MOWS writes minor error and warning messages to log/center.log. If something does not seem to work correctly, the contents of this file should be examined.

For problems, please send email to

version: 19970320