Installing BSF consists of copying bsf.jar and .jars for any languages
intended to be supported to a directory in the execution CLASSPATH of
your application, or simply adding them to your CLASSPATH.

BSF can be used either as a standalone system, as a class library, or as
part of an application server. In order to be used as a class library or
as a standalone system, one must simply download the bsf.jar file from
the BSF web site (http://jakarta.apache.org/bsf/index.html) and include
it in their CLASSPATH, along with any required classes or jar files
implementing the desired languages.

In order to use BSF as part of the Tomcat servlet engine, one must
currently download patches from the BSF website that permit Jasper
to call BSF. Instructions for this are posted on the website, and may
soon be accompanied by pre-built binaries. It is intended that these
changes will be merged into Tomcat in the near future.

