SlideShare a Scribd company logo
/path/to/content
the Apache Jackrabbit content repository
Outline
• Repository model
• Property and node types
• Sessions and namespaces
• References and versioning
• Search and observation
• Access control
• Persistence and clustering
• Deployment and configuration
• Questions?
Repository model
Repository structure
Repository
Workspace A Workspace B Workspace C /jcr:system
… or more commonly
Repository
default workspace /jcr:system
Workspace structure
Root node /
/jcr:systemNode /a
Node /a/cNode /a/b
a
b c
jcr:system
Node structure
Property name Type Value
jcr:primaryType Name nt:unstructured
jcr:mixinTypes Name[] mix:referenceable
jcr:uuid String c6d27a10-bf23-11e3-b…
title String My new node
author String Jukka Zitting
Child nodes
foo, bar, baz[1], baz[2]
Property and node types
Common property types
Property type Used for Examples
String Short to medium-sized text “foo”, “This paragraph…”
Binary Binary data and long text PNG, PDF, “This book…”
Name Node and property names “nt:folder”, “content”
Path Node and property paths “/jcr:system”, “/etc/map”
Boolean, Long, Double Scalar data true, 0, -2846, 3.14, NaN
Date ISO 8601 timestamp 2014-04-08T12:00:00.000Z
Reference Graph structures c6d27a10-bf23-11e3-b…
Multi-valued properties
• Zero or more values
• Limit at around 10-100k values, depending on size of values
• All values must be of the same type
• Duplicates allowed
• No “null” values
• Automatically removed
• Order is preserved
Common node types
nt:base
- jcr:primaryType: Name
- jcr:mixinTypes: Name[]
nt:unstructured
- * (any properties OK)
+ * (any child nodes OK)
oak:Unstructured (w/o order)
- * (any properties OK)
+ * (any child nodes OK)
mix:referenceable
- jcr:uuid: String
mix:versionable
- …
mix:lockable
- …
Common node types, cont.
nt:hierarchyNode (abstract)
- jcr:created: Date
nt:file
+ jcr:content
nt:folder
+ *: nt:hierarchyNode
nt:resource
- jcr:data: Binary
- jcr:mimeType: String
- jcr:lastModified: Date
Example
Site
nt:unstructured
form
nt:folder
style.css
nt:file
logo.png
nt:file
function
nt:folder
jquery.js
nt:file
Blog
nt:unstructured
Post 1
nt:unstructured
attachment.pdf
nt:file
Post 2
nt:unstructured
Comment 1
nt:unstructured
Sessions and namespaces
Sessions
workspace
Session
Session
Session Session
Session
Session
• All content access goes through a session
• Sessions are created with an authenticated login() call
• Session-based authorization of reads, writes and other operations
• Tracking of transient changes
• Atomic save()
• Not thread-safe!
• for concurrent operations, use multiple sessions
Namespaces
• The repository has a set of prefix -> URI namespace mappings
jcr: http://www.jcp.org/jcr/1.0
nt: http://www.jcp.org/jcr/nt/1.0
mix: http://www.jcp.org/jcr/mix/1.0
xml: http://www.w3.org/XML/1998/namespace
etc.
• Used to prevent naming conflicts between different clients
• Each session can override (non-default) mappings locally
• designed for cases like XML imports, etc.
• in practice seldom used, and often not recommended
References and versioning
mix:referenceable
- jcr:uuid = c6d27a10-bf23-11e3-b1b6-0800200c9a66
References
- seeAlso = c6d27a10-bf23-11e3-b…
References, cont.
• hard references
• enforced integrity; target can not be removed
• least flexibility; think twice before using
• weak references
• remains valid across moves/renames
• paths, names, URLs, etc.
• no backreferences
mix:versionable
Versioning
checkin
Versioning, cont.
• To make a node versionable, add the mix:versionable mixin
• scope of “versionability” determined by node types (OPV)
• A checkin freezes a piece of content and makes a copy of it in the
version history
• A checkout unfreezes the content and allows it be modified
• A restore goes back in time to a previously checked in version
• A merge combines changes from another workspace to those made
in this workspace
Search and observation
Search examples
// find all PDF files within this workspace, most recent first
SELECT * FROM [nt:file]
WHERE [jcr:mimeType] = ‘application/pdf’
ORDER BY [jcr:lastModified] DESC
// find all content about Christmas within my blog
/jcr:root/sites/myblog//*[jcr:contains(., ‘Christmas’)]
Search
• By default all content is indexed
• Configurable per repository
• Support for full text search
• Also binaries indexed with automatic text extraction
• Full access control of search results
• However:
• Limited join support/performance
• No facets or aggregate queries
Observation
• An observation listener can select to receive events
• on changes of specified types
• on changes at or below a specified path
• on changes at nodes with specified identifiers
• on changes at nodes of specified types
• The events are delivered in asynchronous callbacks
• Remember the non-thread-safety of sessions!
• Often used to maintain a cache of expensive-to-compute data
Access control
Access control
• Fine-grained, ACL-based access control
• Applies to all content accesses
• Writes
• Reads
• Search
• Observation
• etc.
• Support for custom privileges
• e.g. an “execute” privilege
Persistence and clustering
Persistence managers
Repository
Workspace A Workspace B Workspace C /jcr:system
Persistence
Manager 1
Persistence
Manager 2
Persistence
Manager 3
Persistence
Manager 4
Persistence alternatives
Embedded Database PM
Derby, H2
External Database PM
PostgreSQL,
Oracle, etc.
Data store
Repository
Workspace A /jcr:system
Persistence
Manager 1
Persistence
Manager 2
Data Store
Data store alternatives
File Data Store
Local FS, NFS
Database Data Store S3 Data Store
PostgreSQL,
Oracle, etc.
S3
Clustering
Persistence
Manager
PostgreSQL, Oracle, etc.
Repository
Persistence
Manager
Repository
Persistence
Manager
Repository
Deployment and configuration
Deployment packages
• jackrabbit-webapp
• basic web interface (still no content browser/editor)
• exposes the repository through JNDI, WebDAV, RMI
• jackrabbit-standalone
• runnable jar
• jackrabbit-webapp plus embedded Jetty
• basic tooling: backup/migration, CLI, etc.
• jackrabbit-jca
• designed for full J2EE environments
• support for managed transactions
Embedded deployment
• jackrabbit-core plus all dependencies
• Maven recommended
• slf4j used for logging
• Full control over the repository
• Extra work to make the repository externally manageable
Repository configuration
• repository.xml
• main repository configuration file
• security, clustering, data store, /jcr:system, etc.
• workspace.xml
• configuration of each workspace
• persistence manager, search index, etc.
• automatically created based on template in repository.xml
• indexing_configuration.xml
• optional, customizes the search index
• see http://jackrabbit.apache.org/jackrabbit-configuration.html
Questions?

More Related Content

PDF
JCR - Java Content Repositories
PPTX
Oak, the architecture of Apache Jackrabbit 3
PDF
Apache Jackrabbit Oak on MongoDB
PPT
Content Storage With Apache Jackrabbit
PPTX
Oak, the Architecture of the new Repository
PDF
Apache Jackrabbit Oak - Scale your content repository to the cloud
PPT
Content Management With Apache Jackrabbit
PDF
2021.02 new in Ceph Pacific Dashboard
JCR - Java Content Repositories
Oak, the architecture of Apache Jackrabbit 3
Apache Jackrabbit Oak on MongoDB
Content Storage With Apache Jackrabbit
Oak, the Architecture of the new Repository
Apache Jackrabbit Oak - Scale your content repository to the cloud
Content Management With Apache Jackrabbit
2021.02 new in Ceph Pacific Dashboard

What's hot (20)

PPTX
OpenStack Glance
PDF
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
PPTX
ceph optimization on ssd ilsoo byun-short
PDF
Side by Side with Elasticsearch & Solr, Part 2
PDF
分布式Key Value Store漫谈
PDF
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
PPTX
Introduction to Sightly and Sling Models
PDF
The Patterns of Distributed Logging and Containers
PPTX
Elastic Stack Introduction
PPTX
Apache Flink and what it is used for
PDF
OSGi, Scripting and REST, Building Webapps With Apache Sling
PPTX
Demystifying flink memory allocation and tuning - Roshan Naik, Uber
PDF
Streaming Event Time Partitioning with Apache Flink and Apache Iceberg - Juli...
PDF
Apache kafka performance(latency)_benchmark_v0.3
KEY
High Performance Weibo QCon Beijing 2011
PDF
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
PDF
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
ODP
Caching Strategies
PDF
Storage and Alfresco
PPTX
Caching solutions with Redis
OpenStack Glance
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
ceph optimization on ssd ilsoo byun-short
Side by Side with Elasticsearch & Solr, Part 2
分布式Key Value Store漫谈
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Introduction to Sightly and Sling Models
The Patterns of Distributed Logging and Containers
Elastic Stack Introduction
Apache Flink and what it is used for
OSGi, Scripting and REST, Building Webapps With Apache Sling
Demystifying flink memory allocation and tuning - Roshan Naik, Uber
Streaming Event Time Partitioning with Apache Flink and Apache Iceberg - Juli...
Apache kafka performance(latency)_benchmark_v0.3
High Performance Weibo QCon Beijing 2011
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Caching Strategies
Storage and Alfresco
Caching solutions with Redis
Ad

Viewers also liked (20)

PPTX
The new repository in AEM 6
KEY
Open source masterclass - Life in the Apache Incubator
PPTX
Apache development with GitHub and Travis CI
PPTX
MicroKernel & NodeStore
PPT
Mime Magic With Apache Tika
PPTX
The architecture of oak
PPTX
New Repository in AEM 6 by Michael Marth
PPTX
Repository performance tuning
PPTX
OSGifying the repository
PPTX
Apache Jackrabbit @ Swiss Open Source Awards 2011
PPT
The return of the hierarchical model
KEY
Content extraction with apache tika
PDF
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
PDF
Introduccion jee
PDF
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
PDF
Apache Jackrabbit
PDF
Building Content Applications with JCR and OSGi
PPTX
Demystifying Oak Search
PPTX
Into the TarPit: A TarMK Deep Dive
PDF
Introduction to JCR
The new repository in AEM 6
Open source masterclass - Life in the Apache Incubator
Apache development with GitHub and Travis CI
MicroKernel & NodeStore
Mime Magic With Apache Tika
The architecture of oak
New Repository in AEM 6 by Michael Marth
Repository performance tuning
OSGifying the repository
Apache Jackrabbit @ Swiss Open Source Awards 2011
The return of the hierarchical model
Content extraction with apache tika
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
Introduccion jee
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
Apache Jackrabbit
Building Content Applications with JCR and OSGi
Demystifying Oak Search
Into the TarPit: A TarMK Deep Dive
Introduction to JCR
Ad

Similar to /path/to/content - the Apache Jackrabbit content repository (20)

PDF
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
PDF
AFS case study
DOC
Best Oracle dba online training institute
PDF
A Closer Look at Apache Kudu
PPTX
Apache flume - an Introduction
PDF
Introduction to SolrCloud
PPTX
Monitoring MongoDB’s Engines in the Wild
PDF
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
PDF
ModeShape 3 overview
PDF
Information Retrieval - Data Science Bootcamp
PPT
Introduction to Web Services - Architecture
PPTX
Understand oracle real application cluster
PPTX
Everything You Need To Know About Persistent Storage in Kubernetes
PPTX
Benchmarking Solr Performance at Scale
PPTX
Solr Exchange: Introduction to SolrCloud
PPTX
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
PDF
High Performance Solr
PPTX
Pune-Cocoa: Blocks and GCD
PPTX
06.1 .Net memory management
PDF
Introduction to firebidSQL 3.x
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
AFS case study
Best Oracle dba online training institute
A Closer Look at Apache Kudu
Apache flume - an Introduction
Introduction to SolrCloud
Monitoring MongoDB’s Engines in the Wild
Introduction to Apache ZooKeeper | Big Data Hadoop Spark Tutorial | CloudxLab
ModeShape 3 overview
Information Retrieval - Data Science Bootcamp
Introduction to Web Services - Architecture
Understand oracle real application cluster
Everything You Need To Know About Persistent Storage in Kubernetes
Benchmarking Solr Performance at Scale
Solr Exchange: Introduction to SolrCloud
Intro to Solr Cloud, Presented by Tim Potter at SolrExchage DC
High Performance Solr
Pune-Cocoa: Blocks and GCD
06.1 .Net memory management
Introduction to firebidSQL 3.x

More from Jukka Zitting (7)

PPT
Text and metadata extraction with Apache Tika
PPT
Mime Magic With Apache Tika
PPT
NoSQL Oakland
ODP
Introduction to JCR and Apache Jackrabbi
PPT
File System On Steroids
PPT
Design and architecture of Jackrabbit
PPT
Apache Tika
Text and metadata extraction with Apache Tika
Mime Magic With Apache Tika
NoSQL Oakland
Introduction to JCR and Apache Jackrabbi
File System On Steroids
Design and architecture of Jackrabbit
Apache Tika

Recently uploaded (20)

PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
L1 - Introduction to python Backend.pptx
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
System and Network Administraation Chapter 3
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
top salesforce developer skills in 2025.pdf
PPTX
Essential Infomation Tech presentation.pptx
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
AI in Product Development-omnex systems
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Digital Strategies for Manufacturing Companies
PDF
medical staffing services at VALiNTRY
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Upgrade and Innovation Strategies for SAP ERP Customers
2025 Textile ERP Trends: SAP, Odoo & Oracle
L1 - Introduction to python Backend.pptx
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
System and Network Administraation Chapter 3
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Softaken Excel to vCard Converter Software.pdf
top salesforce developer skills in 2025.pdf
Essential Infomation Tech presentation.pptx
Design an Analysis of Algorithms I-SECS-1021-03
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
AI in Product Development-omnex systems
Internet Downloader Manager (IDM) Crack 6.42 Build 41
How to Migrate SBCGlobal Email to Yahoo Easily
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Digital Strategies for Manufacturing Companies
medical staffing services at VALiNTRY

/path/to/content - the Apache Jackrabbit content repository