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.
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.
The table below shows the currently available modules.
| Module Name | Type | Use |
|---|---|---|
| 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 configuration of MOWS is specified in a simple ASCII file. An example of the configuration is given below:
(MOWSCenter 1.0
(Host mows-small.rz.uni-mannheim.de)
(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))))
The current version is 09a1. The following resources are available for downloading:
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
Several applications of MOWS have been demonstrated. They are briefly described in the Application page.
The API documentation of MOWS is availabe online.
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 yoshida@rz.uni-mannheim.de.