JCR as a standard a.k.a. JSR 170 started evolving from February 2002. Day software contributed heavily to its development and by March 2005 a final version was out and thus came to existence JCR 1.0. The reference implementation is hosted by Apache foundation under the name Jackrabbit. JCR 1.0 defines a repository as follows:

A content repository consists of one or more workspaces, each of which contains a tree of items. An item is either a node or a property. Each node may have zero or more child nodes and zero or more child properties. There is a single root node per workspace, which has no parent. All other nodes have one parent. Properties have one parent (a node) and cannot have children; they are the leaves of the tree. All of the actual content in the repository is stored within the values of the properties.

In addition to this JSR 170 classifies repository features into three sets; Level 1 , Level 2 and Optional. Level 2 feature implementations were classified optional for a vendor.

Level 1 defines a read-only repository. This encompasses the following functionality:
• Retrieval and traversal of nodes and properties
• Reading the values of properties
• Transient namespace remapping
• Export to XML/SAX
• Query facility with XPath syntax
• Discovery of available node types

Level 2 defines a read/write repository. This includes all features of level 1, as well as the following:
• Adding and removing nodes and properties
• Writing the values of properties
• Persistent namespace changes
• Import from XML/SAX
• Assigning node types to nodes

The optional repository features are:
• Transactions
• Versioning
• Observation
• Locking
• SQL Search.

Jackrabbit is an open source full feature implementation of JCR. Jackrabbit has implemented Level 1, Level 2 and the Optional features. Jackrabbit a very active apache project with a great developer community to support users. Currently it is actively following the JSR 283 a.k.a. JCR 2.0 development. Version 1.5 is feature complete and is set to release soon. Version 1.5 is considered the most advanced and optimized, stable Jackrabbit version.

A Jackrabbit repository can be hosted and accessed in various ways. It could be ‘embedded’. In this model one accesses the repository through a folder path. The same repository can be exposed as a J2EE resource that can be looked up through JNDI. It can also be hosted as an RMI server. Another popular and useful access model is to provide WebDAV access. Jackrabbit Wiki has great discussions and articles that details these hosting modes.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post Navigation