Jigsaw: A Revolutionary Web Server for Linux

Mr. Haddad exposes the design philosophy and essential features of the Jigsaw web Server, an open-source project from W3C, and provides a brief guide for installing it on Linux.
Administration Tool

Jigsaw comes with an administration tool called JigAdmin. JigAdmin is a graphical interface that communicates with the JigAdmin Administration Server. This server can administer multiple Jigsaw servers running on the same machine, provided that those servers have been launched by the same Java Virtual Machine.

The version of JigAdmin that comes with Jigsaw 2.1.1 is built with Swing components; it is easy to use with drag-and-drop features. Additionally, it comes with an extensive documentation explaining how to run JigAdmin, the command-line options, and a complete explanation for its menus and their functionality.

Starting the JigAdmin Server

The default configuration files provided by the default installation are designed to start two servers, an instance of the Jigsaw server and one JigAdmin Server. However, to start the JigAdmin, we can also use the provided sample script:

% ./scripts/jigadmin.sh &

We get the authentication window (see Figure 2). The realm used to access the server is admin, the default user is admin and the default password is also admin. It is highly recommended to modify the username and password after you log in the first time.

Figure 2. Jigadmin Authentication Window

After the authentication phase, we receive the JigAdmin main window (Figure 3), from which we control the server configuration (Figure 4).

Figure 3. Main Screen for JigAdmin httpd-server

Figure 4. Server Properties Screen Shot

JigAdmin Client

Now that the JigAdmin server is running, we can access it with the following command:

% java org.w3c.jigadmin.Main [-root root] [url]

The default root is your current directory. So if you are in the same directory where you started Jigsaw, you do not need the -root option. If you are running the administration server on the same machine, using the default port 8009, you do not need to provide a URL; it is the administration server's. However, if you are not in the root directory, you can access the administration server with:

% java org.w3c.jigadmin.Main -root INSTDIR/Jigsaw/Jigsaw/

Jigsaw Documentation

Jigsaw comes with a very organized and rich set of documentation that is divided into six sections:

  • A Quick Start document covering the basics on how to install and run the server.

  • A Basic Concepts document discussing Jigsaw's design, authentication and access control.

  • The Jigsaw Configuration Manual covers the basics of installing and running the server to descriptions of the most complex configurations you can do with Jigsaw.

  • A Frequently Asked Questions document that answers all the FAQs about Jigsaw and its use.

  • A Programmer's Documentation guide describing Jigsaw from a programmer's point of view and indicating how to extend it to fulfill your own needs.

  • A User's Guide.

Other Jigsaw Packages

W3C released a Jigsaw Proxy Package that is a ready-to-run Jigsaw server configured as a proxy server. It is configured with a pre-installed caching proxy module and comes with an HTTP/1.1 server and client. Jigsaw also supports SSL with Jigsaw-SSL 2.01 beta which is public domain software that allows Jigsaw to use iSaSiLk as an SSL-provider. IAIK Jigsaw-SSL provides a SSLv3 supporting extension to the W3C HTTP Jigsaw server architecture for dealing securely with any incoming client request. IAIK JigsawSSL has been updated to operate on W3C's Jigsaw version Jigsaw 2.0.1.


Jigsaw is not the sort of web server around which you would build an enterprise-level Internet presence. Nonetheless, if you are serious about staying ahead of the curve on web protocols and infrastructures, you will want to have a test-bed machine running Jigsaw.

W3C is responsible for overseeing web standards, and anyone wishing conformity with HTTP/ 1.1 and the upcoming HTTP-NG (Next Generation) will want to do some testing with Jigsaw, as the latest version is totally HTTP 1.1-compliant. I highly recommend trying it out.


Ibrahim F. Haddad (ibrahim.haddad@lmc.ericsson.se) works for Ericsson Research Canada in the Systems Research Division. He is currently a DrSc Candidate in Computer Science at Concordia University in Montréal.