w3cJigsaw FAQ

Jigsaw Frequently Answered Questions

What is Jigsaw ?

Using Jigsaw

Technical stuff

You think your question about Jigsaw is worth entering this list ? Mail it to jigsaw@w3.org !


What's the purpose of Jigsaw ?

Jigsaw is the new W3C reference server. Its main purpose is to demonstrate new protocol features as they are defined (such as PICS), and to provide the basis for experimentations in the field of server software (such as the provided MUX prototypical implementation).

Where can I get Jigsaw ?

You can download Jigsaw distribution file in various formats, and using either ftp or http:

Windows zip files (1.5Mo)
UNIX gzip tar file (700Ko)

Why is Jigsaw written in Java ?

Java has a number of advantages that fit well with our purposes. It provides portable threads and garbage collection, allows for a very dynamic server architecture. It's ability to move code around may be use in future development to experiment with the mobile code concept.

Jigsaw is written in Java, it must be really slow...

No so true ! Check out the performance evaluation of Jigsaw, which indicates that it performs at least as well as the CERN server.

What are all these information in the form based resource editor ?

The current version of the generic resource editor is rather terse. At this point, the resource editor will present all the declared resource attribute values and some ways to edit them. All the attributes are declared in each resource reference manual.

Resource editors is an area in which you can expect big improvement in the next release. Right now, it is recommended that you use two browser windows, one displaying the form based editor, and the other one displaying the appropriate reference manual for the resource being edited (which described all the attributes semantics).

How do I setup authentication ?

Setting up authentication through the form based interface requires you to run through the following stages:

  1. Create an authentication realm, if required. This is done through the Realms resource, usually available as /Admin/Realms. You can of course reuse authentication realms to protect different areas of the server.
  2. Setup an authentication filter on the appropriate resource. The target of the filter can be either a directory resource (in which case the filter will protect all the area defined by the sub-resources of this directory resource), or any other filtered resource (hence allowing you to protect a single resource). Setting up an authentication filter is done by editing the target resource, through the generic resource editor. If you want to protect, say  the /protected directory resource, then you have to bring up its editor, which will usually be available as /Admin/Editor/protected.
  3. Setup the authentication filter parameters. Once the filter is plugged in, you can edit its attribute by clicking on the appropriate link in the bottom of the target resource editor.

That's it ! For more information, you may want to read through the configuration tutorial.

How do I tie a resource to a directory not under my server root?
Contributed by Sirilyan <sirilyan@io.com>

CERN server implemented this through the Pass directive, which let you map a server path to an absolute path on your file system. Jigsaw uses the w3c.jigsaw.resources.PassDirectory resource.

COOKBOOK METHOD: Create a new resource with Add resources in the Editor at the location you want the new server path to exist. Assign whatever name you desire to the new resource, and assign w3c.jigsaw.resources.PassDirectory for the class. Edit this new resource to change the pass-target attribute to the absolute path to the directory you want to serve.

You may want to change the name attribute of the 'index' file in that directory to Overview.html. name and filename are two separate attributes in Jigsaw; this is also a poor man's (or a Win95/NT user's) symlink.

Serving directories outside your server root may be a security risk.

How do I setup CGI scripts ?

Jigsaw supports CGI script through a the w3c.jigsaw.forms.CgiResource resource class. Let's say your script's path relative to the server root is WWW/data/myscript. You will first have to create an appropriate w3c.jigsaw.forms.CgiResource instance to wrap your script, by pointing your browser to the /Admin/Editor/data/ directory resource. Click the Add resource link, and enter the name under which you wish your screen to be seen, and the w3c.jigsaw.forms.CgiResource as the resource class.

Then edit the newly created resource, and setup it's command line (the command line the server will use to run your script). Each line of the text field should represent one argument, the first one being the script full path.

How do I setup Jigsaw as a proxy ?

Running Jigsaw as a proxy involves the following steps:

Restart Jigsaw again, it is now running as an HTTP/1.1 compliant caching proxy !

How can I extend Jigsaw ?

Jigsaw can be extended in a number of ways. Here are just three possible things you can play with, from the simplest to the complex ones:

Why does Jigsaw implement its own persistence mechanism

Jigsaw implements its own persistence mechanism while RMI already provides a way to serialize objects, why is it so, will it change ? What Jigsaw implements in the w3c.jigsaw.resource package is more then persistence. It provides both a way of serializing objects and a way of describing what and how the object will be dumped. The available meta-description of objects (that you can obtain through the getAttributes method of resources), is a central part of Jigsaw architecture, since it offers the ability to create generic resource editors. This is not likely to disappear.

However, Jigsaw persistence mechanism may be merged in the future to the RMI interface, just by providing an implementation of the readObject and writeObject method through its existing mechanism.

How can I use HotJava on top of Jigsaw's HTTP client API ?

HotJava is Sun's Java based browser. If you want to experience an HTTP/1.1 compliant browser, you can run this browser on top of Jigsaw's HTTP/1.1 compliant HTTP client API. To do so, you need to define the java.protocol.handler.pkgs property to w3c.www.protocol before launching HotJava. The best way to do so is to edit the HotJava property files.

Jigsaw's HTTP client API defines a number of other properties, if you are planing to use this setting, you should read the HttpManager documentation to get the complete list of available properties. These will allow you to add caching, authentication, proxying and more to HotJava !

Upgrading my resources from 1.0alpha to 1.0alpha3

Here are some of the things one might encounter when converting software written for an early version of Jigsaw to run with the current version (these notes are from converting a medium-sized application which integrates Jigsaw with an ODBC database and does some HTML generation of database results):


Anselm Baird-Smith
$Id: FAQ.html,v 1.9 1996/10/04 13:59:23 abaird Exp $