Paperclips FAQ
--------------

Here are some questions that people ask me from time to time.


1. why should I use Paperclips instead of Tomcat?

Because Tomcat is not free software. Because the Tomcat developers
don't necessarily have the free reign that I have.


2. is Paperclips stable?

Yes and no. Paperclips has been stable in the past and the stable
releases are tagged in the CVS tree. 

As I write this (February 2002) Paperclips has reached a mature RC1 
stage for a 2.3 release and is becomming stable. The next stage
will be to release Paperclips to a slightly wider audience.


3. why are there so many dependancies?

Because servlet containers these days are very complicated. There will
soon be more dependancies when the Servlet API mandates JNDI for
containers.


4. what is classpathx?

Classpathx is a GNU project to develop free extensions for GNU java
projects such as Kaffe and GCJ.


5. why don't you have a server.xml or something similar?

We will in the future, but it will be for special config only (things
like virtual host setup).

I think the command line is actually a better tool for developers 
starting a webserver. It's easier to integrate with the rest of the 
operating system, it's easier to use in a hurry and it's easier to 
script. Our war-path based system is unique and once you get used 
to it is quite a powerfull tool.


6. how does the auto-mapper work?

The auto-mapper is a servlet which can be used to automatically load
and bind other servlets. This was a feature much used by early servlet
containers and is analagous to the famous /cgi-bin/ scheme for cgi scripts.

When the auto-mapper is run it will automatically try to load a servlet
when you request a url of the form:

  http://paperclips-host:port/servlet/classname

The servlet classes are found either on the class-path or in a special
/servlets/ directory (which Paperclips tries to find in the top-level directory
of the document root you are serving).

For example if you run Paperclips in a directory that has a directory
structure that looks like this:

   /servlets/
      MyServlet.class
      gnu/
        paperclips/
           servlets/
              DebugServlet.class
      MyOtherServlet.class

Then you could request the MyOtherServlet like this:

  http://paperclips:7171/servlet/MyOtherServlet

and the gnu.paperclips.servlets.DebugServlet like this:

  http://paperclips:7171/servlet/gnu.paperclips.servlets.DebugServlet


7. what is a service?

In Paperclips the class gnu.paperclips.Service does most of the work
of defining what a servlet-context is and how it should be configured.

For example, the class gnu.paperclips.WebApp extends Service to perform
configuration of the servlet-context via a web.xml deployment descriptor.

You can write new classes which extend Service to do new and interesting
things. For example, you may want to define a special directory structure
for serving servlets. Or bind an unusual servlet by default.



$Author: nferrier $
$Date: 2002/02/13 01:41:38 $
