<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <html>
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

                      <meta name="author" value="Stefan Bodewig">
  <meta name="email" value="bodewig@apache.org">
                <meta name="author" value="Chuck Murcko">
  <meta name="email" value="chuck@topsail.org">
                <meta name="author" value="Victor Orlikowski">
  <meta name="email" value="victor.j.orlikowski@alumni.duke.edu">
      
      <title>Jakarta BSF - Frequently Asked Questions</title>
    </head>

    <body bgcolor="#ffffff" text="#000000" link="#525D76">
      <table border="0" width="100%" cellspacing="0">
        <!-- TOP IMAGE -->
        <tr>
                <td align="left">
    <a href="http://jakarta.apache.org"><img src="images/jakarta-logo.gif" border="0"/></a>
    </td>
    <td align="right">
              <a href="http://jakarta.apache.org/bsf/"><img src="./images/bsf_logo.jpg" alt="Jakarta BSF" border="0"/></a>
        </td>
          </tr>
      </table>
      <table border="0" width="100%" cellspacing="4">
        <tr><td colspan="2">
          <hr noshade="" size="1"/>
        </td></tr>

        <tr>
          <!-- LEFT SIDE NAVIGATION -->
          <td valign="top" nowrap="true">
                <p><strong>BSF Essentials</strong></p>
    <ul>
          <li>      <a href="./index.html">Front Page</a>
  </li>
          <li>      <a href="./bsfnews.html">News</a>
  </li>
          <li>      <a href="./manual.html">Documentation</a>
  </li>
          <li>      <a href="./projects.html">Related Projects</a>
  </li>
          <li>      <a href="./resources.html">Resources</a>
  </li>
          <li>      <a href="./faq.html">BSF FAQ</a>
  </li>
          <li>      <a href="./problems.html">Having Problems?</a>
  </li>
        </ul>
      <p><strong>Download</strong></p>
    <ul>
          <li>      <a href="http://jakarta.apache.org/site/downloads/downloads_bsf.cgi">Binaries</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/downloads/downloads_bsf.cgi">Source Code</a>
  </li>
        </ul>
      <p><strong>Jakarta</strong></p>
    <ul>
          <li>      <a href="http://jakarta.apache.org/site/news.html">News & Status</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/mission.html">Mission</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/guidelines.html">Guidelines Notes</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/faqs.html">FAQs</a>
  </li>
        </ul>
      <p><strong>Get Involved</strong></p>
    <ul>
          <li>      <a href="http://jakarta.apache.org/site/getinvolved.html">Overview</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/cvsindex.html">Source Repositories</a>
  </li>
          <li>      <a href="http://www.faqs.org/rfcs/rfc1855.html">Netiquette</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
  </li>
          <li>      <a href="http://jakarta.apache.org/site/library.html">Reference Library</a>
  </li>
          <li>      <a href="http://issues.apache.org/jira/browse/BSF">Bug Database</a>
  </li>
          <li>      <a href="http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&type=4&pid=12310621&resolution=-1&sorter/field=issuekey&sorter/order=ASC">Enhancement Requests</a>
  </li>
        </ul>
            </td>
          <td align="left" valign="top">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#525D76">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>Questions</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                      <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>About this FAQ</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#latest-version">
  Where do I find the latest version of this
        document?
  </a></li>
                    <li><a href="#adding-faqs">
  How can I contribute to this FAQ?
  </a></li>
                    <li><a href="#creating-faq">
  How do you create the HTML version of this
        FAQ?
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>General</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#what-is-bsf">
  What is Bean Scripting Framework?
  </a></li>
                    <li><a href="#bsf-name">
  Why do you call it BSF?
  </a></li>
                    <li><a href="#history">
  Tell us a little bit about BSF's history.
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>Installation</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#no-gnu-tar">
  I get checksum errors when I try to extract the
      <code>tar.gz</code> distribution file. Why?
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>How do I ...</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#doh">
  How do I install BSF?
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>It doesn't work (as expected)</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#winzip-lies">
  BSF creates JAR files with a lower-case
        <code>meta-inf</code> directory.
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>Advanced Issues</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#TBD2">
  
      To be added
      
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
                <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>Known Problems</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
        <ul>
                    <li><a href="#javadoc-cannot-execute">
  JavaDoc failed: java.io.IOException: javadoc: cannot execute
  </a></li>
                </ul>
      </blockquote>
    </td></tr>
  </table>
            </blockquote>
    </td></tr>
  </table>

  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#525D76">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>Answers</strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                      <a name="latest-version">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          Where do I find the latest version of this
        document?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>The latest version can always be found at BSF's homepage 
          <a href="http://jakarta.apache.org/bsf/faq.html">http://jakarta.apache.org/bsf/faq.html</a>.</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
        <a name="adding-faqs">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          How can I contribute to this FAQ?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>The page you are looking it is generated from 
          <a href="http://cvs.apache.org/viewcvs.cgi/~checkout~/jakarta-bsf/xdocs/faq.xml">this</a>
          document.  If you want to add a new question, please submit
          a patch against this document to one of BSF's mailing lists;
          hopefully, the structure is self-explanatory.</p>
                                        <p>If you don't know how to create a patch, see the patches
          section of <a href="http://jakarta.apache.org/site/source.html">this
          page</a>.</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
        <a name="creating-faq">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          How do you create the HTML version of this
        FAQ?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>We use 
        <a href="http://jakarta.apache.org/velocity/anakia.html">Anakia</a>
        to render the HTML version from the original XML file.</p>
                                        <p>The Velocity stylesheets used to process the XML files can
        be found in the <code>xdocs/stylesheets</code> subdirectory of
        BSF's CVS repository - the build file <code>docs.xml</code> is
        used to drive Anakia.  This file assumes that you have the
        <code>jakarta-site2</code> module checked out from CVS as
        well, but if you follow the instruction from Anakia's
        homepage, you should get it to work without that.  Just make
        sure all required jars are in the task's classpath.</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="what-is-bsf">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          What is Bean Scripting Framework?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>
        Bean Scripting Framework (BSF) is a set of Java classes which provides
        scripting language support within Java applications. It also provides
        access to Java objects and methods from supported scripting languages.
        BSF allows one to write JSPs in languages other than Java while
        providing access to the Java class library. In addition, BSF permits
        any Java application to be implemented in part (or dynamically
        extended) by a language that is embedded within it. This is achieved
        by providing an API that permits calling scripting language engines
        from within Java, as well as an object registry that exposes Java
        objects to these scripting language engines.
        </p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
        <a name="bsf-name">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          Why do you call it BSF?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>
        It's the beanage. Beans were the cool thing when BSF was first being
        designed, and BSF contains several flavors.
        </p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
        <a name="history">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          Tell us a little bit about BSF's history.
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>
        BSF began life in 1999 as a research project of Sanjiva Weerawarana
        at IBM's T.J. Watson Research Center. The initial intent had been 
        to provide access to JavaBeans from scripting language environments
        (though there is nothing limiting access only to Java Beans). It was
        soon moved to IBM's AlphaWorks developer site, where significant
        interest (both internal and external to IBM) led to its being
        moved to IBM's developerWorks site, where BSF could operate as an
        open source project. During this time, significant development was
        done by Matt Duftler and Sam Ruby, and BSF was incorporated into
        both IBM products (Websphere) and Apache projects (Xalan). It was
        this interest on the part of the Apache Software Foundation that
        ultimately led to BSF's acceptance as a subproject of Jakarta in
        2002.
        </p>
                                        <p>
        During the process of moving BSF to Jakarta, development continued
        within IBM, with further improvements to BSF's integration with
        Jasper being made by John Shin and the addition of debugging support
        for the Javascript language (a team effort, resulting from the work
        of IBM researchers Olivier Gruber, Jason Crawford, and John Ponzo,
        and IBM software developers Chuck Murcko and Victor Orlikowski).
        </p>
                                        <p>
        It is the current version, 2.3, that has been donated to Apache
        Software Foundation from IBM.
        </p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="no-gnu-tar">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          I get checksum errors when I try to extract the
      <code>tar.gz</code> distribution file. Why?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>BSF's distribution contains file names that are longer
        than 100 characters, which is not supported by the standard
        tar file format. Several different implementations of tar use
        different and incompatible ways to work around this
        restriction.</p>
                                        <p>BSF's &lt;tar&gt; task can create tar archives that use
        the GNU tar extension, and this has been used when putting
        together the distribution. If you are using a different
        version of tar (for example, the one shipping with Solaris),
        you cannot use it to extract the archive.</p>
                                        <p>The solution is to either install GNU tar, which can be
        found <a href="http://www.gnu.org/software/tar/tar.html">here</a>,
        or use the zip archive instead (you can extract it using
        <code>jar xf</code>).</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="doh">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          How do I install BSF?
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>
        BSF can be used standalone, 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 simply downloads a copy of the bsf.jar
        file from the
        <a href="http://jakarta.apache.org/bsf/index.html">BSF web site</a>
        and includes it in their classpath, along with any required classes
        or jar files for the desired languages.    
        </p>
                                        <p>
        In order to use BSF as part of the
        <a href="http://jakarta.apache.org/tomcat/">Tomcat</a>
        servlet engine, one must currently download patches from the BSF
        web site that permit Jasper to call BSF. Instructions for this will be
        posted on the website, and will be accompanied by prebuilt binaries.
        We hope that these changes will be merged into Tomcat in the near
        future.
        </p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="winzip-lies">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          BSF creates JAR files with a lower-case
        <code>meta-inf</code> directory.
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>No it doesn't.</p>
                                        <p>You may have seen these lower-case directory names in  
        WinZIP, but WinZIP is trying to be helpful (and fails).  If
        WinZIP encounters a filename that is all upper-case, it 
        assumes it has come from an old DOS box andchanges the case to
        all lower-case for you.</p>
                                        <p>If you extract (or just check) the archive with jar, you
        will see that the names have the correct case.</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="TBD2">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          
      To be added
      
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>
        To be added
        </p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
                        <a name="javadoc-cannot-execute">
  <table border="0" cellspacing="0" cellpadding="2" width="100%">
    <tr><td bgcolor="#828DA6">
      <font color="#ffffff" face="arial,helvetica,sanserif">
        <strong>
          JavaDoc failed: java.io.IOException: javadoc: cannot execute
        </strong>
      </font>
    </td></tr>
    <tr><td>
      <blockquote>
                              <p>There is a bug in the Solaris reference implementation of
        the JDK (see <a href="http://developer.java.sun.com/developer/bugParade/bugs/4230399.html">http://developer.java.sun.com/developer/bugParade/bugs/4230399.html</a>).
        This also appears to be true under Linux. Moving the JDK to
        the front of the PATH fixes the problem.</p>
                        </blockquote>
    </td></tr>
  </table>
  </a>
              </blockquote>
    </td></tr>
  </table>
            </td>
        </tr>

        <!-- FOOTER -->
        <tr><td colspan="2">
          <hr noshade="" size="1"/>
        </td></tr>
        <tr><td colspan="2">
          <div align="center"><font color="#525D76" size="-1"><em>
          Copyright &#169; 2002-2010, Apache Software Foundation
          </em></font></div>
        </td></tr>
      </table>
    </body>
  </html>
<!-- end the processing -->






