Apache Jackrabbit

From Bauman National Library
This page was last modified on 30 November 2016, at 11:25.
Apache Jackrabbit
Apache Jackrabbit Logo
Developer(s) Apache Software Foundation
Stable release
2.12.5 / 7 November 2016; 6 years ago (2016-11-07)
Repository {{#property:P1324}}
Development status Active
Written in Java
Operating system Cross-platform
Type Content repository
License Apache License 2.0
Website jackrabbit.apache.org

Apache Jackrabbit is an open source content repository for the Java platform. The Jackrabbit project was started on August 28, 2004, when Day Software licensed an initial implementation of the Java Content Repository API (JCR). Jackrabbit was also used as the reference implementation of JSR-170, specified within the Java Community Process. The project graduated from the Apache Incubator on March 15, 2006, and is now a Top Level Project of the Apache Software Foundation.

JCR specifies an API for application developers (and application frameworks) to use for interaction with modern content repositories that provide content services such as searching, versioning, transactions, etc.[1]

Jackrabbit Architecture

The general architecture of Jackrabbit can be described in three Layers: A Content Application Layer, an API Layer and a Content Repository Implementation Layer. Jackrabbit-architecture.png

Content Applications

Content Applications interact through the JSR-170 API with the Content Repository Implementation. There are numerous applications that are available for JSR-170 repositories, some of them are very generic (like a WebDAV server) other applications can be very specific and make use of the content repository as a store for the information that is used by the applications. Java Applications can use a JSR-170 content repository as a replacement for anything from property-files, XML-configuration, certain portions of relational database functionality to straight file system or blob-management. Using a content repository allows an application to deal with an arbitrarily large hierarchical space in a scalable manner automatically profiting from the repository services such as versioning, query, transactions or namespaces which make a content repository an ideal data store for many applications.

A “Generic Content Application” (an application that has no particular functional focus but just allows for generic introspection and manipulation of the repository) uses the capabilities of the node types, access control and other facilities to display a user interface or a network protocol to the end user, seemingly independent from the content that is stored in the repository. Examples of such generic applications are “The Content Explorer”, “WebDAV Server” or a “Subversion Server”. (Or generic Portal, CMS or DMS applications).

A “Specialized Content Application” operates under the assumption that there are certain node types that it operates on, and that it is familiar at least partially with the data model exposed by defined node types. Mostly these node types are defined by the application itself and ship with the application. These applications use a content repository as their persistence layer as a natural evolution from the use of an RDBMS or a file system. Examples of “Specialized Content Applications” have a very wide range from a “DVD Collection Management”, to a “Message Board”, to “Workflow and BPM” but also possibly complete next generation “Enterprise Resource Planning Systems”.

Content Repository API

The Content Repository API Layer is split into two major sections.

The Content Repository API defined by JSR-170

A number features of a content repository, that have been removed from the JSR-170 specification since they are difficult to implement on existing non-java-based content repositories and administrational Repository tasks that have also been deliberately excluded from JSR-170

There are only very few (mostly administrational) applications which make use of the non-JSR-170 APIs provided by Jackrabbit.

The boxes in the architecture chart do not symbolize package names or class names directly but mostly semantically grouped blocks of functionality.

Content Repository Implementation

The content Repository Implementation portion of the architecture chart reflects the major building blocks of the jackrabbit content repository implementation.

The size of the blocks symbolizes roughly the amount of code and therefore the complexity of the individual functional block. Again the functional blocks do not directly map to package or class names.

There are three scopes in a content repository: A repository scope, a workspace scope and a session scope.

Every function that is operated against a repository can be attributed to at least one of these scopes, some functions can operate on more than one scope.

  • Repository
  • Nodetype
  • Version
  • NamespaceRegistry
  • Workspace
  • Query
  • Observation
  • State
  • Xml
  • Session
  • Path
  • HierarchyManager
  • QName
  • ItemImpl, PropertyImpl, NodeImpl
  • ItemId, PropertyId, NodeId
  • ItemManager

This is not a complete list but includes some of the most important component of the content repository implementation.[2]

Jackrabbit Configuration

Apache Jackrabbit needs two pieces of information to set up a runtime content repository instance:

  • Repository home directory

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.

  • Repository configuration file

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.[3]

Installation Apache Jackrabbin Standalone Server 2.12.5


Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />
  1. Apache Jackrabbit [Electronic resource]: From https://https://en.wikipedia.org: - Access mode: https://en.wikipedia.org/wiki/Apache_Jackrabbit
  2. Apache Jackrabbit [Electronic resource]: From https://ackrabbit.apache.org: - Access mode: https://http://jackrabbit.apache.org/jcr/jackrabbit-architecture.html
  3. Apache Jackrabbit [Electronic resource]: From https://ackrabbit.apache.org: - Access mode: http://jackrabbit.apache.org/jcr/jackrabbit-configuration.html