This document describes how to setup a Jackrabbit content repository in the deployment model 1; The (Web-) Application Bundle. In this deployment model, each application bundle uses its own local content repository that is not visible to other applications. See the JCR client application HOWTO for instructions on how to use the configured content repository.
Note that it is also possible to bypass the JNDI mechanism by including all the Jackrabbit startup and configuration code directly in your application. This approach however makes a strong binding between your application and the underlying repository implementation.
The instructions in this document apply to Tomcat versions 4.x and 5.x. It should be easy to modify the instructions for other container environments.
Important: remember that two Jackrabbit instances should never read from/write to the same physical storage. This setup is not supported and will lead to corrupt data.
Follow the steps below to setup a model 1 Jackrabbit deployment for your web application in Tomcat 4.x or 5.x. Example code for both versions of Tomcat is included after this overview.
Limitations: the application should not be redeployed during the same JVM process to avoid creating duplicate Jackrabbit instances with the same configuration. In case you want to redeploy your application be sure to shutdown the repository when your application is undeployed. It can be done by calling RepositoryImpl.shutdown() (e.g. in the destroy() method of a servlet).
In Tomcat 4.x and 5.0, add the following snippet in server.xml under the Context element of your web application.
<Resource name="jcr/repository" auth="Container" type="javax.jcr.Repository" /> <ResourceParams name="jcr/repository"> <parameter> <name>factory</name> <value>org.apache.jackrabbit.core.jndi.BindableRepositoryFactory</value> </parameter> <parameter> <name>configFilePath</name> <value>[full path to repository.xml]</value> </parameter> <parameter> <name>repHomeDir</name> <value>[full path to the repository home folder]</value> </parameter> </ResourceParams>
In Tomcat 5.5, add the following snippet in your application’s WEB-INF/context.xml or $CATALINA_HOME/conf/_enginename_/_hostname_/_webappname_.xml. If you prefer central configuration, you can add the configuration to the Host Context section in the server.xml.
<Resource name="jcr/repository" auth="Container" type="javax.jcr.Repository" factory="org.apache.jackrabbit.core.jndi.BindableRepositoryFactory" configFilePath="[full path to repository.xml" repHomeDir="[full path to the repository home folder]" />