You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2005/11/09 17:46:43 UTC

svn commit: r332080 - /incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml

Author: jukka
Date: Wed Nov  9 08:46:38 2005
New Revision: 332080

URL: http://svn.apache.org/viewcvs?rev=332080&view=rev
Log:
Initial (uncomplete) version of the Jackrabbit Installation Guide.

Added:
    incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml   (with props)

Added: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml?rev=332080&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml (added)
+++ incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml Wed Nov  9 08:46:38 2005
@@ -0,0 +1,677 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2004-2005 The Apache Software Foundation or its licensors,
+                       as applicable.
+
+   Licensed 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.
+  -->
+<document>
+  <properties>
+    <title>Jackrabbit Installation Guide</title>
+  </properties>
+  <body>
+    <section name="Jackrabbit Installation Guide">
+      <p>
+        TODO
+      </p>
+    </section>
+    <section name="Building Jackrabbit">
+      <p>
+        As the Jackrabbit project has yet to make its first binary releases,
+        you need to build Jackrabbit from sources to install it. Luckily the
+        <a href="http://maven.apache.org/maven-1.x/">Maven</a> build environment
+        makes it very easy to build Jackrabbit.
+      </p>
+      <p>
+        The first step in building Jackrabbit is to check out the Jackrabbit
+        sources from the <a href="http://subversion.tigris.org/">Subversion</a>
+        source repository at
+        <a href="http://svn.apache.org/repos/asf/incubator/jackrabbit/">http://svn.apache.org/repos/af/incubator/jackrabbit/</a>.
+        The trunk of the source repository is divided in two parts:
+      </p>
+      <dl>
+        <dt><a href="http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk/jackrabbit/">trunk/jackrabbit</a></dt>
+        <dd>
+          This is the main Jackrabbit source tree that contains everything you
+          need for a fully functional Jackrabbit installation. This source tree
+          is often referred to as "the Jackrabbit core". In addition to the
+          main Jackrabbit jar library, this source tree is also contains the
+          sources of the "jackrabbit-commons" utility library used also in
+          other JCR tools and implementations.
+        </dd>
+        <dt><a href="http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk/contrib/">trunk/contrib</a></dt>
+        <dd>
+          This is a collection of additional Jackrabbit modules and other
+          contributed subprojects like the RMI and WebDAV network layers for
+          the JCR API. See the individual contrib projects for installation
+          and usage instructions.
+        </dd>
+      </dl>
+      <subsection name="Checking out the sources with Subversion">
+        <p>
+          You need a <a href="http://subversion.tigris.org/">Subversion</a>
+          client to access the Jackrabbit source repository. Take a look at the
+          <a href="http://subversion.tigris.org/project_links.html#clients">Subversion client list</a>
+          unless you already have a one installed. Once you have the Subversion
+          client installed you can checkout the main Jackrabbit source tree
+          with the following command or its equivalent in the client you are using:
+        </p>
+<source>svn checkout http://svn.apache.org/repos/asf/incubator/jackrabbit/trunk/jackrabbit</source>
+        <p>
+          The above checkout will create a subdirectory named
+          <code>jackrabbit</code> that contains the latest Jackrabbit sources.
+          See the <a href="http://svnbook.red-bean.com/">Subversion book</a> or
+          the documentation of your Subversion client for more information on
+          how to manage your source tree and keep it up to date with latest
+          developments.
+        </p>
+      </subsection>
+      <subsection name="Building the sources with Maven">
+        <p>
+          Jackrabbit uses <a href="http://maven.apache.org/maven-1.x/">Maven</a>
+          version 1.x as the build system and the source tree is mostly
+          organized according to the Maven
+          <a href="http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html">Standard Directory Layout</a>.
+          The Maven version 1.0.2 and Java Development Kit (JDK) version 1.4
+          are the standard build environment, but you should be quite fine also
+          with Maven 1.1 and JDK 5.
+        </p>
+        <p>
+          <strong>Note for JDK 5 users:</strong>
+          As discussed in
+          <a href="http://issues.apache.org/jira/browse/JCR-46">JCR-46</a>, you
+          need to <a href="http://xml.apache.org/xalan-j/downloads.html">download</a>
+          the <a href="http://xml.apache.org/xalan-j/">Xalan-Java</a> files
+          <code>xalan.jar</code> and <code>serializer.jar</code> and place them
+          in <code>$MAVEN_HOME/lib/endorsed</code> (or <code>$JRE/lib/endorsed</code>
+          if you're using Maven 1.1) to avoid problems in generating the JavaCC
+          grammar files used by Jackrabbit.
+        </p>
+        <p>
+          See the Maven
+          <a href="http://maven.apache.org/maven-1.x/start/install.html">installation</a>
+          and <a href="http://maven.apache.org/maven-1.x/start/quick-start.html">quick-start</a>
+          guides for instructions on how to use Maven with Jackrabbit. You
+          may also want to check for
+          <a href="http://mevenide.codehaus.org/">Maven integration</a>
+          with your favourite Integrated Development Environment (IDE).
+          Common operations to run within the checked out
+          <code>jackrabbit</code> directory are:
+        </p>
+        <dl>
+          <dt><code>maven jar</code></dt>
+          <dd>
+            Compiles the Jackrabbit source files, runs all unit tests and
+            packages the Jackrabbit classes into a jar library. This is the
+            standard "build all" operation for Jackrabbit. The resulting
+            jar package is located in <code>target/jackrabbit-*.jar</code>.
+            This operation also generates the <code>jackrabbit-commons</code>
+            jar package within the <code>modules/commons</code> subdirectory.
+          </dd>
+          <dt><code>maven jar:install</code></dt>
+          <dd>
+            Executes the <code>jar</code> goal and installs the resulting jar
+            packages into the local Maven repository. This operation is used
+            when you want to make Jackrabbit available as a dependency for
+            other local Maven projects. The Maven groupId for Jackrabbit is
+            <code>org.apache.jackrabbit</code> and the artifactId is
+            <code>jackrabbit</code>.
+          </dd>
+          <dt><code>maven clean</code></dt>
+          <dd>
+            Removes the <code>target</code> directory that contains all
+            compiled classes and other files generated by the Maven builds.
+            This operation is used to clean up the build environment. The
+            Maven build system is quite good in keeping all the classes
+            and other generated files up to date but every now and then
+            you may want to run <code>maven clean jar</code> to do a fresh
+            build of the entire project.
+          </dd>
+          <dt><code>maven copy-deps</code></dt>
+          <dd>
+            Copies all the Jackrabbit dependencies into the
+            <code>target/lib</code> directory. This operation is used as a
+            convenient way to get all the Jackrabbit dependencies instead of
+            downloading them from the net or looking for them in the local
+            Maven repository. Note however that the copied dependencies will
+            contain the compile and unit test dependencies in addition to the
+            real runtime dependencies of Jackrabbit.
+          </dd>
+        </dl>
+      </subsection>
+    </section>
+    <section name="Jackrabbit dependencies">
+      <p>
+        Jackrabbit is designed to run on version 1.4 or higher of the
+        <a href="http://java.sun.com/j2se/">Java 2 Standard Edition</a> (J2SE)
+        platform with a relatively small set of dependency libraries.
+      </p>
+      <p>
+        The following list describes the APIs and libraries that Jackrabbit
+        depends on during runtime in addition to the standard J2SE platform.
+        Please see the <a href="dependencies.html">Dependencies</a> page for
+        a detailed listing of the latest versions of the dependency libraries.
+      </p>
+      <dl>
+        <dt><a href="http://jcp.org/en/jsr/detail?id=170">Content Repository for Java(TM) Technology API</a></dt>
+        <dd>
+          The <a href="http://jcp.org/en/jsr/detail?id=170">Content Repository
+          for Java(TM) Technology API</a> (JCR) interfaces implemented by
+          Jackrabbit.
+        </dd>
+        <dt><a href="http://java.sun.com/products/jta/">Java Transaction API</a></dt>
+        <dd>
+          The <a href="http://java.sun.com/products/jta/">Java Transaction API</a>
+          (JTA) classes not available in J2SE 1.4.
+        </dd>
+        <dt><a href="http://lucene.apache.org/java/">Apache Lucene</a></dt>
+        <dd>
+          The full text search engine library used to implement much of the
+          query features of Jackrabbit.
+        </dd>
+        <dt><a href="http://db.apache.org/derby/">Apache Derby</a></dt>
+        <dd>
+          The pure Java database implementation used by Jackrabbit as the
+          default backend for the database persistence manager.
+        </dd>
+        <dt><a href="http://logging.apache.org/log4j">log4j</a></dt>
+        <dd>
+          The logging framework used to output messages of varying importance
+          during runtime.
+        </dd>
+        <dt><a href="http://xerces.apache.org/xerces2-j/">Xerces2 Java Parser</a></dt>
+        <dd>
+          The XML parser APIs and implementation used directly for features
+          not included in the standard XML APIs in J2SE 1.4.
+        </dd>
+        <dt><a href="http://jakarta.apache.org/commons/collections/">Commons Collections</a></dt>
+        <dd>
+          Advanced collection classes, utilities and data structures used
+          internally by Jackrabbit.
+        </dd>
+        <dt><a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html">util.concurrent</a></dt>
+        <dd>
+          Advanced concurrent programming classes not available in J2SE 1.4.
+        </dd>
+      </dl>
+      <p>
+        There is no need to download these dependencies manually, as Maven
+        will automatically download and cache the dependency jar files
+        specified in the Jackrabbit project descriptor. You can also use
+        the <code>maven copy-deps</code> command to copy all the dependency
+        jar files into <code>target/lib</code> when you need to deploy
+        Jackrabbit along with its dependencies.
+      </p>
+    </section>
+    <section name="Jackrabbit deployment models">
+      <p>
+        See the <a href="arch/deploy.html">Jackrabbit Example Deployment Models</a>
+        document and the associated deployment model HOWTOs for instructions on
+        how to install Jackrabbit in the different deployment models.
+      </p>
+      <p>TODO: Integrate the deployment model HOWTOs into this document</p>
+    </section>
+    <section name="Repository configuration">
+      <p>
+        Jackrabbit needs two pieces of information to set up a runtime
+        content repository instance:
+      </p>
+      <dl>
+        <dt>Repository home directory</dt>
+        <dd>
+          The filesystem path of the directory containing the content
+          repository accessed by the runtime instance of Jackrabbit. This
+          directory usually contains all the repository content, search indexes,
+          internal configuration, and other persistent information managed
+          within the content repository. Note that this is not absolutely
+          required and some persistence managers and other Jackrabbit components
+          may well be configured to access files and even other resources
+          (like remote databases) outside the repository home directory.
+          A designated repository home directory is however always needed even
+          if some components choose to not use it. Jackrabbit will automatically
+          fill in the repository home directory with all the required files and
+          subdirectories when the repository is first instantiated.
+        </dd>
+        <dt>Repository configuration file</dt>
+        <dd>
+          The filesystem path of the repository configuration XML file.
+          This file specifies the class names and properties of the various
+          Jackrabbit components used to manage and access the content repository.
+          Jackrabbit parses this configuration file and instantiates the
+          specified components when the runtime content repository instance
+          is created.
+        </dd>
+      </dl>
+      <p>
+        These to configuration parameters are passed either directly to
+        Jackrabbit when creating a repository instance or indirectly through
+        settings for a JNDI object factory or some other component management
+        system.
+      </p>
+      <subsection name="Repository configuration file">
+        <p>
+          The repository configuration file is an XML file that specifies
+          the components and configuration of a Jackrabbit content repository.
+          The configuration file has the following overall outline:
+        </p>
+<source><![CDATA[<Repository>
+    <FileSystem class="...">...</FileSystem>
+    <Security>
+        <AccessManager class="...">...</AccessManager>
+        [ <LoginModule class="...">...</LoginModule> ]
+    </Security>
+    <Workspaces rootPath="..." defaultWorkspace="..."/>
+    <Workspace name="...">
+        <FileSystem class="...">...</FileSystem>
+        <PersistenceManager class="...">...</PersistenceManager>
+        [ <SearchIndex class="...">
+            ...
+            [ <FileSystem class="...">...</FileSystem> ]
+          </SearcIndex> ]
+    </Workspace>
+    <Versioning rootPath="...">
+        <FileSystem class="...">...</FileSystem>
+        <PersistenceManager class="...">...</PersistenceManager>
+    </Versioning>
+</Repository>
+]]></source>
+        <p>
+          See <a href="http://svn.apache.org/viewcvs.cgi/incubator/jackrabbit/trunk/jackrabbit/src/main/config/repository.xml?view=markup">src/main/config/repository.xml</a>
+          file for a working example configuration file. The file also contains
+          a commented Document Type Definition (DTD) for the XML configuration
+          file format.
+        </p>
+      </subsection>
+      <subsection name="Configuration variables">
+        <p>
+          The values in the configuration file are interpreted as plain
+          strings except for a few special variables. The following variables
+          of the form <code>${variable}</code> are replaced by the variable
+          value before the string is interpreted as a configuration value.
+        </p>
+        <dl>
+          <dt><code>${rep.home}</code></dt>
+          <dd>
+            Repository home directory. This variable is replaced by the
+            repository home directory path given when the repository was
+            instantiated. This variable makes it possible to use a single
+            configuration file for multiple different repositories.
+          </dd>
+          <dt><code>${wsp.name}</code></dt>
+          <dd>
+            Workspace name. This variable is only available within the
+            <code>Workspace</code> template element and is replaced by
+            the name of the workspace being configured.
+          </dd>
+          <dt><code>${wsp.home}</code></dt>
+          <dd>
+            Workspace home directory. This variable is only available within
+            the <code>Workspace</code> template element and is replaced by the
+            directory path assigned to the workspace being configured.
+          </dd>
+        </dl>
+      </subsection>
+      <subsection name="Security configuration">
+        <p>TODO</p>
+      </subsection>
+      <subsection name="Workspace configuration">
+        <p>
+          The <code>Workspace</code> element is used as a template for
+          separate <em>workspace configuration files</em> created for each
+          new workspace. Because of this the <code>Workspace</code> element
+          is not interpreted directly from the repository configuration file.
+          Instead the workspace configuration template is first copied into
+          the workspace configuration file which is then interpreted to
+          set up the configured workspace components. Thus modifying the
+          workspace configuration template in the repository configuration
+          file will not affect existing workspace configurations.
+        </p>
+        <p>
+          The workspace configuration consists of a virtual file system,
+          a persistence manager, and an optional search index component.
+          The <a href="#PersistenceManager">persistence manager</a> component
+          is used to store the content of the workspace. The
+          <a href="#FileSystem">virtual file system</a> component is used
+          as the base file system for the persistence manager in case
+          file system access is needed. The optional
+          <a href="#QueryHandler">search index</a> component takes care of
+          indexing and querying the content of the workspace. If a search
+          index component is not specified, then the workspace will not
+          be searchable. An optional virtual file system component can
+          be specified for the search index as well.
+        </p>
+        <p>
+          A common workspace configuration example using the
+          <a href="#LocalFileSystem">LocalFileSystem</a>,
+          <a href="#DerbyPersistenceManager">DerbyPersistenceManager</a>, and
+          <a href="#SearchIndex">Lucene SearchIndex</a> components
+          is shown below.
+        </p>
+<source><![CDATA[<Workspace name="${wsp.name}">
+    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
+        <param name="path" value="${wsp.home}"/>
+    </FileSystem>
+    <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+        <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
+        <param name="schemaObjectPrefix" value="${wsp.name}_"/>
+    </PersistenceManager>
+    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
+        <param name="path" value="${wsp.home}/index"/>
+        <param name="useCompoundFile" value="true"/>
+        <param name="minMergeDocs" value="100"/>
+        <param name="volatileIdleTime" value="3"/>
+        <param name="maxMergeDocs" value="100000"/>
+        <param name="mergeFactor" value="10"/>
+        <param name="bufferSize" value="10"/>
+        <param name="cacheSize" value="1000"/>
+        <param name="forceConsistencyCheck" value="false"/>
+        <param name="autoRepair" value="true"/>
+        <param name="analyzer" value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
+    </SearchIndex>
+</Workspace>
+]]></source>
+       </subsection>
+      <subsection name="Versioning configuration">
+        <p>
+          The <code>Versioning</code> configuration element specifies the
+          virtual file system and the persistence manager used to manage
+          the version histories of all the nodes within the content repository.
+          The version storage is much like a normal workspace without
+          a search index. Instead of a workspace name, the version storage
+          is given a root directory path using the <code>rootPath</code>
+          attribute.
+        </p>
+        <p>
+          An common versioning configuration example using the
+          <a href="#LocalFileSystem">LocalFileSystem</a> and
+          <a href="#DerbyPersistenceManager">DerbyPersistenceManager</a>
+          components is shown below.
+        </p>
+<source><![CDATA[<Versioning rootPath="${rep.home}/version">
+    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
+        <param name="path" value="${rep.home}/version"/>
+    </FileSystem>
+    <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+        <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
+        <param name="schemaObjectPrefix" value="version_"/>
+    </PersistenceManager>
+</Versioning>
+]]></source>
+      </subsection>
+      <subsection name="Modifying the repository configuration">
+        <p>
+          In general you should be very careful when modifying a repository
+          configuration file once the repository has been initialized. Usually
+          (but not always!) it is safe to change the authentication and
+          access control settings within the <code>Security</code> element and
+          some of the parameters of the other components. See the documentation
+          of individual components for more information on the use of specific
+          configuration parameters.
+        </p>
+      </subsection>
+    </section>
+    <section name="Access managers" id="AccessManager">
+      <p>TODO</p>
+    </section>
+    <section name="Login modules" id="LoginModule">
+      <p>TODO</p>
+    </section>
+    <section name="Persistence managers" id="PersistenceManager">
+      <p>
+        Persistence managers are Jackrabbit components that manage the
+        persistent storage of content nodes and properties. 
+        The <code>org.apache.jackrabbit.core.state.PersistenceManger</code>
+      </p>
+      <p>
+        A separate persistence manager is assigned to each workspace and the
+        global versioning store. The persistence manager implementations to
+        use are configured using the <code>PersistenceManager</code>
+        configuration element within the <code>Workspace</code> configuration
+        template (and the instantiated workspace configuration files) and the
+        <code>Versioning</code> configuration element. The layout of a
+        <code>PersistenceManager</code> configuration element is shown below.
+      </p>
+<source><![CDATA[<PersistenceManager class="...">
+    <param name="...">...</param>
+    ...
+</PersistenceManager>
+]]></source>
+      <p>
+        The <code>class</code> attribute of the <code>PersistenceManager</code>
+        element contains the fully qualified class name of the persistence
+        manager implementation class. The class must implement the
+        <code>org.apache.jackrabbit.core.state.PersistenceManager</code>
+        interface and have an empty default constructor. String properties
+        can be assigned using the <code>param</code> elements according to
+        the JavaBean conventions.
+      </p>
+      <p>
+        See the <a href="apidocs/org/apache/jackrabbit/core/state/PersistenceManager.html">PersistenceManager javadocs</a>
+        for more details.
+      </p>
+      <subsection name="InMemPersistenceManager" id="InMemPersistenceManager">
+        <p>
+          The <code>org.apache.jackrabbit.core.state.mem.InMemPersistenceManager</code>
+          class implements a simple persistence manager that keeps all content
+          in memory. A custom binary serializer is optionally used to load
+          and store the persistent state during initialization and shutdown
+          of the persistence maanger.
+        </p>
+        <p>
+          This persistence manager is best suited for testing and for small
+          workspaces that need extra performance at the cost of reliable
+          persistence. The configuration parameters for the
+          <code>InMemPersistenceManager</code> class are:
+        </p>
+        <dl>
+          <dt><code>persistent</code></dt>
+          <dd>
+            Set to <code>true</code> to enable the use of the binary
+            serializer to persistently load and store the managed content
+            during startup and shutdown.
+          </dd>
+          <dt><code>initialCapacity</code></dt>
+          <dd>
+            The initial capacity of the hash maps used to store the
+            content items. The default value should be fine for almost
+            all uses of this persistence manager.
+          </dd>
+          <dt><code>loadFactory</code></dt>
+          <dd>
+            The load factor of the hash maps. The default value should be
+            fine for almost all uses fo this persistence manager.
+          </dd>
+        </dl>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/state/db/InMemPersistenceManager.html">InMemPersistenceManager javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+      <subsection name="ObjectPersistenceManager" id="ObjectPersistenceManager">
+        <p>
+          The <code>org.apache.jackrabbit.core.state.obj.ObjectPersistenceManager</code>
+          class implements a persistence manager that uses a custom binary
+          serialization format to store the managed content directly in
+          the underlying virtual file system. The virtual file system is
+          expected to perform well with a large number of small files.
+        </p>
+        <p>
+          There are no configuration parameters for the
+          <code>ObjectPersistenceManager</code> class.
+        </p>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/state/obj/ObjectPersistenceManager.html">ObjectPersistenceManager javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+      <subsection name="XMLPersistenceManager" id="XMLPersistenceManager">
+        <p>
+          The <code>org.apache.jackrabbit.core.state.xml.XMLPersistenceManager</code>
+          class implements a persistence manager that uses XML files stored
+          in the underlying virtual file system. The difference between this
+          persistence manager and the ObjectPersistenceManager is the storage
+          format used. The XMLPersistenceManager is best suited for testing
+          and debugging where readability of the content files is more
+          important than repository performance.
+        </p>
+        <p>
+          There are no configuration parameters for the
+          <code>XMLPersistenceManager</code> class.
+        </p>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/state/xml/XMLPersistenceManager.html">XMLPersistenceManager javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+      <subsection name="SimpleDbPersistenceManager" id="SimpleDbPersistenceManager">
+        <p>
+          The <code>org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager</code>
+          class implements a generic Java Database Connectivity (JDBC) -based
+          persistence manager. Content is stored in a set of simple
+          non-normalized tables that are created automatically unless they
+          already exist. The configuration parameters for the
+          <code>SimpleDbPersistenceManager</code> class are:
+        </p>
+        <dl>
+          <dt><code>driver</code></dt>
+          <dd>
+            The fully qualified name of the JDBC driver class.
+          </dd>
+          <dt><code>url</code></dt>
+          <dd>
+            The JDBC database URL.
+          </dd>
+          <dt><code>user</code></dt>
+          <dd>
+            The database user. The user should have full access to the
+            content tables and administrative access to create the tables
+            if the tables have not already been created.
+          </dd>
+          <dt><code>password</code></dt>
+          <dd>
+            The password of the database user.
+          </dd>
+          <dt><code>schema</code></dt>
+          <dd>
+            The type of database schema to use for creating the content tables
+            if needed. (<code>mysql</code>, <code>mssql</code>, etc.)
+          </dd>
+          <dt><code>schemaObjectPrefix</code></dt>
+          <dd>
+            The prefix to use for the names of the content tables.
+          </dd>
+          <dt><code>externalBLOBs</code></dt>
+          <dd>
+            Set to <code>true</code> (the default) to store binary properties
+            in the underlying virtual file system. Set to <code>false</code>
+            to store binary properties in the database.
+          </dd>
+        </dl>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/state/db/SimpleDbPersistenceManager.html">SimpleDbPersistenceManager javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+      <subsection name="DerbyPersistenceManager" id="DerbyPersistenceManager">
+        <p>
+          The <code>org.apache.jackrabbit.core.state.db.DerbyPersistenceManager</code>
+          is a subclass of the <code>SimpleDbPersistenceManager</code>. It
+          implements a persistence manager that uses an embedded
+          <a href="http://db.apache.org/derby/">Apache Derby</a> database
+          to manage content.
+        </p>
+        <p>
+          The <code>DerbyPersistenceManager</code> class has the same
+          configuration parameters as the
+          <code>SimpleDbPersistenceManager</code>, but provides Derby-specific
+          defaults for the <code>driver</code> and <code>schema</code>
+          parameters. The <code>url</code> parameter should normally be
+          something like <code>jdbc:derby:${wsp.home}/db;create=true</code>
+          and the <code>user</code> and <code>password</code> parameters can
+          be ignored. As Derby has reasonable support for binary content,
+          it often makes sense to set the <code>externalBLOBs</code> parameter
+          to <code>false</code>.
+        </p>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.html">DerbyPersistenceManager javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+    </section>
+    <section name="Query handlers" id="QueryHandler">
+      <p>TODO</p>
+    </section>
+    <section name="Virtual file systems" id="FileSystem">
+      <p>
+        Jackrabbit uses the <code>org.apache.jackrabbit.core.fs.FileSystem</code>
+        interface as a virtual file system abstraction. Although this interface
+        does not cover all direct file system use of Jackrabbit, it still allows
+        for flexibility in selecting where and how to store various parts of the
+        persistent repository state. For example in some cases it might make
+        sense to store the search indexes on a fast disk and the archived node
+        versions on a slower but more reliable disk.
+      </p>
+      <p>
+        It is possible to configure separate virtual file systems for the global
+        repository state, workspaces, search indexes, and versioning.
+        A virtual file system is configured using the <code>FileSystem</code>
+        configuration element:
+      </p>
+<source><![CDATA[<FileSystem class="...">
+    <param name="...">...</param>
+    ...
+</FileSystem>
+]]></source>
+      <p>
+        The <code>class</code> attribute of the <code>FileSystem</code> element
+        contains the fully qualified class name of the file system
+        implementation class. The class must implement the
+        <code>org.apache.jackrabbit.core.fs.FileSystem</code> interface and
+        have an empty default constructor. String properties can be assigned
+        using the <code>param</code> elements according to the JavaBean
+        conventions.
+      </p>
+      <p>
+        See the <a href="apidocs/org/apache/jackrabbit/core/fs/FileSystem.html">FileSystem javadocs</a>
+        for more details.
+      </p>
+      <subsection name="LocalFileSystem" id="LocalFileSystem">
+        <p>
+          The <code>org.apache.jackrabbit.core.fs.local.LocalFileSystem</code>
+          class implements a simple virtual file system based on a directory
+          within the local file system. The configuration parameters for the
+          <code>LocalFileSystem</code> class are:
+        </p>
+        <dl>
+          <dt><code>path</code></dt>
+          <dd>
+            The path of the local directory that is used to contain the
+            virtual file system. Uses "<code>/</code>" as the path separator
+            regardless of the underlying operating system.
+          </dd>
+          <dt><code>enableHandleMonitor</code></dt>
+          <dd>
+            Set to <code>true</code> to enable tracking of open file handles.
+          </dd>
+        </dl>
+        <p>
+          See the <a href="apidocs/org/apache/jackrabbit/core/fs/local/LocalFileSystem.html">LocalFileSystem javadocs</a>
+          for more details.
+        </p>
+      </subsection>
+    </section>
+    <section name="Contributed subprojects" id="contrib">
+      <p>TODO</p>
+    </section>
+  </body>
+</document>

Propchange: incubator/jackrabbit/trunk/jackrabbit/src/site/xdoc/install.xml
------------------------------------------------------------------------------
    svn:eol-style = native