Skip to end of metadata
Go to start of metadata

This documentation is for ModeShape 3.x, and the latest stable release is 3.8.1.Final. However, community focus has shifted to 4.x, and no additional 3.x releases are planned. Please see the ModeShape 4.x documentation.

ModeShape is a distributed, hierarchical, transactional, and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source and written in Java. Clients use the JSR-283 standard Java API for content repositories (aka, JCR) or ModeShape's REST API, and can query content through JDBC and SQL.

ModeShape is perfect for data that is organized in a tree-like hierarchical structure where related data is stored close together, where navigation to related content is just as common and important as fast key-based lookups or queries. The hierarchical organization is similar to a file system, making ModeShape a natural for storing files annotated with metadata. ModeShape can even automatically extract the structured information within the files so that clients can navigate or use typed queries to find files satisfying complex, structurally-oriented criteria. ModeShape is an excellent store for data with a complex schema, since the schema can vary over the database and evolve over time. ModeShape is the perfect distributed data store for all kinds of applications, including repositories, content management systems, historical data services, provisioning and governance systems, and metadata management systems.

Looking for ModeShape 4.x documentation? It's available here.
Looking for ModeShape 2.x documentation? It's available here.


  • All data is organized in a hierarchical tree-like structure of nodes, single- and multi-valued properties, and children.
  • All data is cached and stored in Infinispan, which can persist data on the file system, in databases, in the cloud, and even distributed in-memory across a data grid
  • Cluster to distribute/replicate data across multiple machines, and even keep most/all of it in-memory to form a data-grid with extremely fast access (faster than from local disk)
  • Implements the JSR-283 standard Java API for content repositories (aka, JCR 2.0)
  • Define a schema with node types and mixins that (optionally) limit the properties and children for various kinds of nodes, and evolve the schema over time without having to migrate the data.
  • Use multiple query languages, including SQL-like, XPath, and full-text search languages to find data.
  • Use sessions to create and validate large amounts of content transiently, and then save all changes with one call.
  • ModeShape can be configured to use and participate in JTA transactions. See the JCR 2.0 (JSR-283) specification to learn how to use the JTA and JCR APIs together.
  • Register to be notified with events when data is changed anywhere in the cluster, optionally filtered by custom criteria.
  • Segregate data into multiple repositories and workspaces.
  • Embed ModeShape into your Java SE, EE, or web applications.
  • Install into JBoss AS7 and applications to centrally configure, manage, and monitor repositories.

About us

What's here?

You'll find all of our documentation in this space. You can navigate the documentation using the tree at the left or the "Next Page" and "Previous Page" links at the top and bottom of each page. Feel free to add comments if you have suggestions, tips, or specific questions about the documentation on a particular page. However, if you have questions about how to use ModeShape or are experiencing problems, please use our discussion forum.

Where to start

See the What's new page to learn about all the changes that are in ModeShape 3, and then follow the Getting Started page to give our examples a whirl. We also have a high-level overview of the JCR API, and descriptions of how ModeShape works internally.

Editing the documentation

ModeShape contributors can edit the documentation in our space. But you must be logged in (using the same credentials you use on our ) to see the editing functionality. See the Authoring Guide for information about how to use Confluence.

Please contact one of the core developer on IRC if you cannot edit pages. They'll have to grant you privileges, and this can only be done after you log in for the first time.

Variables used in documentation

The following variables are used throughout the documents in this space:

version 3.8.1
artifactVersion 3.8.1.Final
infinispanVersion 5.2.10.Final
jgroupsVersion 3.2.13.Final
eapVersion 6.3
irc IRC
communitySite project site
forum discussion forum
wiki community wiki
jira JIRA
jsr170 JSR-170
jsr283 JSR-283
jsr333 JSR-333
jcr20spec JCR 2.0 specification
jcr10spec JCR 1.0 specification
This is first available starting with ModeShape 3.1.
This is first available starting with ModeShape 3.2.
This is first available starting with ModeShape 3.3.
This is first available starting with ModeShape 3.4.
This is first available starting with ModeShape 3.5.
This is first available starting with ModeShape 3.6.

These can be used within the wiki markup of any page by using the {space-metadata-from} macro. For example, the following snippet:

will be rendered as:


Note that by convention any variable name ending in 'Url' should just be the URL and should be used in a link; otherwise, the variables render as a link or a value.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.