Using Loadable Modules

Embeddable web servers have several competing goals. They endeavor to:

It is difficult to meet all these goals in one server. Appweb, however, uses loadable modules to segment functionality and make it possible to meet these goals effectively. The loadable modules ensure that the core HTTP server is compact, secure, and fast, and still has the ability to grow functionality as required.

Appweb Modules

Appweb delivers the following modules:

Name Purpose
mod_cgi Common Gateway Interface (CGI) handler
mod_esp Embedded Server Pages (ESP) handler

Dynamic Loading

An Appweb loadable module is a discrete unit of functionality that may be linked into Appweb to enhance the core HTTP server. Loadable Modules may be dynamically loaded via shared libraries or DLLs

If building Appweb from source, modules can also be statically linked when the library initialization entry point is explicitly invoked from the web server main program.

LoadModule Directive

The Appweb configuration file specifies which modules to load and in what order. As some modules may depend on the functionality provided by other modules -- order does matter.

The LoadModule directive will load a module and activate it for processing. If the module is already loaded (either statically or dynamically), the load directive will have no effect.

LoadModule myModule lib/libmyModule

On Windows, this directive will load libmyModule.dll. On Linux, it will load libmyModule.so. If the module is statically linked into Appweb, the Load Module directive will not need to load it.

Appweb will look for the module in the directory specified relative to the directory defined by the Home directive. Appweb will search other directories if a LoadModulePath directive is specified. This will nominate a set of directories to search in order when attempting to locate the module.

LoadModulePath "../macosx-x64-debug/bin"

For information about how to create a loadable module, see Creating Appweb Modules.

© Embedthis Software. All rights reserved.