Page tree
Skip to end of metadata
Go to start of metadata

Magnolia is a Java based system. This means that the core architecture of Magnolia is based on Java concepts, possibly the most important is the idea that all content in Magnolia is ultimately stored in the Java Content Repository. How the content is stored, affects how you interact and work with Magnolia as a developer.

Java Content Repository

Where does Magnolia store content?

All content (web pages, images, documents, configuration, data) in Magnolia is stored in a content repository called magnolia repository. This is a JackRabbit implementation of Java Content Repository (JCR).

What is the data structure of JCR?

With JCR data is stored in a hierarchical data structure that is comparable to a file system - folders and files. Folder is comparable to a Node. File is comparable to a Property. Traversing down the hierarchy is done similarly to a file system using the tree path: /A/B/property. We look at properties in the next unit: 2.2.3 Nodes and properties.

What content services does JCR implement?

JCR implements:

    • Author based versioning
    • Full textual searching
    • Fine-grained access control
    • Content categorization
    • Content event monitoring

JCR browser

While the Configuration app allows you to see content in the JCR Config workspace, the JCR browser allows you to view and edit all content and associated configuration at repository level for all workspaces (i.e. - you can view details that are visible in a specific app's treeview). 

See official documentation:


We saw earlier that the top level of JCR is the repository. This is further divided into workspaces.

  • A workspace consists a root node '/.
  • Unique IDs (uuid) are unique within one workspace.
  • A JCR session is always bound to one workspace.

 Some of the core workspaces are:

  • config
  • contacts
  • dam
  • data
  • templates
  • usergroups
  • userroles
  • users
  • version
  • website

Where can I see a complete list of workspaces for the Edition I am working with?

The complete list of core workspace folders can viewed in the following application folders: 

  • webapps/magnoliaAuthor/repositories/workspaces
  • webapps/magnoliaPublic/repositories/workspaces

When do I need to create a new workspace?

A classic example of when you need to create a new workspace is when creating a new app. The repository and workspace are specified in the module descriptor:


We look at the role of a module descriptor in: 6.2.1 Project structure.

Can I use another database to feed data to Magnolia?


For a list of compatible database types see our application stack:

Learn more


A simple exercise on deleting a workspace at file system level.

  • No labels

1 Comment

  1. 1 What kind of data structure does JCR provide? (m)
    1. (thumbs up) Hierarchical
    2. (thumbs down) Referential
    3. (thumbs down) Flat.

    2 What kind of two data entities does JCR know?
    1. (thumbs up) Nodes & Properties
    2. (thumbs down) Folders & Files
    3. (thumbs down) Tables & Rows

    (Comment Christian:
    This one is wrong: "What two configuration entities does JCR handle?" -> Nodes and properties is just data, not configuration entities. Ok
    It like you would aks for a database, what kind of data entities exist: tables with rows and columns. Also there is no configuration column or row.

    This one: "What data entry units does JCR recognizes"?
    I think the most proper word is a data entity. Or how would you 'name' in a file system folders and files? data entry units is there to specific thinking in a database schema)

    3 What is the name of a single data pot in JCR providing within one top root node '/' and consistent unique identifiers? 
    1. (thumbs up) Workspace
    2. (thumbs down) Repository
    3. (thumbs down) Database
    4 What two possibilities exist in JCR to reference a node? Show an image. Add to Academy. 
    1. (thumbs up) By its unique ID & by its path 
    2. (thumbs down) By its table & by its row
    3. (thumbs down) By its unique ID & by its JCR primaryType