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

What's hot (20)

PDF
AEM Sightly Template Language
Gabriel Walt
 
PDF
AWS Aurora 100% 활용하기
I Goo Lee
 
PDF
Mongodb - Scaling write performance
Daum DNA
 
PPTX
Sling models by Justin Edelson
AEM HUB
 
PDF
ProxySQL High Avalability and Configuration Management Overview
René Cannaò
 
PDF
RESTFul development with Apache sling
Sergii Fesenko
 
PPTX
Rest and Sling Resolution
DEEPAK KHETAWAT
 
PPTX
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
AWSKRUG - AWS한국사용자모임
 
KEY
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Kevin Weil
 
PDF
Understanding Sling Models in AEM
Accunity Software
 
PPTX
Unique ID generation in distributed systems
Dave Gardner
 
PPTX
Ask the expert AEM Assets best practices 092016
AdobeMarketingCloud
 
PPTX
Web api
Sudhakar Sharma
 
PDF
Architecture java j2 ee a partager
aliagadir
 
PPT
Java Persistence API (JPA) Step By Step
Guo Albert
 
PDF
IDC 서버 몽땅 AWS로 이전하기 위한 5가지 방법 - 윤석찬 (AWS 테크에반젤리스트)
Amazon Web Services Korea
 
PPTX
Apache kafka 관리와 모니터링
JANGWONSEO4
 
PPTX
Alfresco tuning part2
Luis Cabaceira
 
PDF
Deploying Flink on Kubernetes - David Anderson
Ververica
 
PPTX
Mongo DB 완벽가이드 - 4장 쿼리하기
JangHyuk You
 
AEM Sightly Template Language
Gabriel Walt
 
AWS Aurora 100% 활용하기
I Goo Lee
 
Mongodb - Scaling write performance
Daum DNA
 
Sling models by Justin Edelson
AEM HUB
 
ProxySQL High Avalability and Configuration Management Overview
René Cannaò
 
RESTFul development with Apache sling
Sergii Fesenko
 
Rest and Sling Resolution
DEEPAK KHETAWAT
 
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
AWSKRUG - AWS한국사용자모임
 
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Kevin Weil
 
Understanding Sling Models in AEM
Accunity Software
 
Unique ID generation in distributed systems
Dave Gardner
 
Ask the expert AEM Assets best practices 092016
AdobeMarketingCloud
 
Architecture java j2 ee a partager
aliagadir
 
Java Persistence API (JPA) Step By Step
Guo Albert
 
IDC 서버 몽땅 AWS로 이전하기 위한 5가지 방법 - 윤석찬 (AWS 테크에반젤리스트)
Amazon Web Services Korea
 
Apache kafka 관리와 모니터링
JANGWONSEO4
 
Alfresco tuning part2
Luis Cabaceira
 
Deploying Flink on Kubernetes - David Anderson
Ververica
 
Mongo DB 완벽가이드 - 4장 쿼리하기
JangHyuk You
 

Viewers also liked (20)

PPTX
The new repository in AEM 6
Jukka Zitting
 
PPTX
Oak, the Architecture of the new Repository
Michael Dürig
 
PPT
Content Management With Apache Jackrabbit
Jukka Zitting
 
KEY
Open source masterclass - Life in the Apache Incubator
Jukka Zitting
 
PPTX
Apache development with GitHub and Travis CI
Jukka Zitting
 
PPTX
MicroKernel & NodeStore
Jukka Zitting
 
PPT
Mime Magic With Apache Tika
Jukka Zitting
 
PPTX
The architecture of oak
Michael Dürig
 
PPTX
New Repository in AEM 6 by Michael Marth
AEM HUB
 
PPTX
Repository performance tuning
Jukka Zitting
 
PPTX
OSGifying the repository
Jukka Zitting
 
PPTX
Apache Jackrabbit @ Swiss Open Source Awards 2011
Jukka Zitting
 
PPT
The return of the hierarchical model
Jukka Zitting
 
KEY
Content extraction with apache tika
Jukka Zitting
 
PDF
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
Magnolia
 
PDF
Introduccion jee
Miguel Machaca
 
PDF
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
Alessandro Molina
 
PDF
Apache Jackrabbit
elliando dias
 
PDF
Building Content Applications with JCR and OSGi
Cédric Hüsler
 
PPTX
Demystifying Oak Search
Justin Edelson
 
The new repository in AEM 6
Jukka Zitting
 
Oak, the Architecture of the new Repository
Michael Dürig
 
Content Management With Apache Jackrabbit
Jukka Zitting
 
Open source masterclass - Life in the Apache Incubator
Jukka Zitting
 
Apache development with GitHub and Travis CI
Jukka Zitting
 
MicroKernel & NodeStore
Jukka Zitting
 
Mime Magic With Apache Tika
Jukka Zitting
 
The architecture of oak
Michael Dürig
 
New Repository in AEM 6 by Michael Marth
AEM HUB
 
Repository performance tuning
Jukka Zitting
 
OSGifying the repository
Jukka Zitting
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Jukka Zitting
 
The return of the hierarchical model
Jukka Zitting
 
Content extraction with apache tika
Jukka Zitting
 
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
Magnolia
 
Introduccion jee
Miguel Machaca
 
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
Alessandro Molina
 
Apache Jackrabbit
elliando dias
 
Building Content Applications with JCR and OSGi
Cédric Hüsler
 
Demystifying Oak Search
Justin Edelson
 
Ad

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

PDF
2008-12 OJUG JCR Demo
Paul Heaberlin
 
PDF
An Overview of ModeShape
Randall Hauch
 
PDF
JCR and Sling Quick Dive
Paolo Mottadelli
 
PDF
Development without Constraint
Chad Davis
 
PDF
ModeShape 3 overview
Randall Hauch
 
PPT
GateIn Frameworks
jviet
 
PDF
JCR In 10 Minutes
Bertrand Delacretaz
 
PPT
Rollin onj Rubyv3
Oracle
 
PDF
Nuxeo JavaOne 2007
Stefane Fermigier
 
PDF
PHPCR - Standard Content Repository for PHP
Henri Bergius
 
PPTX
Melbourne User Group OAK and MongoDB
Yuval Ararat
 
PDF
A Content Repository for TYPO3 5.0
Karsten Dambekalns
 
PDF
Apache ManifoldCF @ Linux Day 2012
Piergiorgio Lucidi
 
PDF
Introduction to CQ5
Michele Mostarda
 
PPTX
Shooting rabbits with sling
Tomasz Rękawek
 
PDF
Introducing JSR-283
David Nuescheler
 
ODP
JCR and ModeShape
Jozef Chocholacek
 
PPTX
Building enterprise web applications with spring 3
Abdelmonaim Remani
 
PDF
What's new in JSR-283?
David Nuescheler
 
ZIP
Rapid JCR applications development with Sling
Bertrand Delacretaz
 
2008-12 OJUG JCR Demo
Paul Heaberlin
 
An Overview of ModeShape
Randall Hauch
 
JCR and Sling Quick Dive
Paolo Mottadelli
 
Development without Constraint
Chad Davis
 
ModeShape 3 overview
Randall Hauch
 
GateIn Frameworks
jviet
 
JCR In 10 Minutes
Bertrand Delacretaz
 
Rollin onj Rubyv3
Oracle
 
Nuxeo JavaOne 2007
Stefane Fermigier
 
PHPCR - Standard Content Repository for PHP
Henri Bergius
 
Melbourne User Group OAK and MongoDB
Yuval Ararat
 
A Content Repository for TYPO3 5.0
Karsten Dambekalns
 
Apache ManifoldCF @ Linux Day 2012
Piergiorgio Lucidi
 
Introduction to CQ5
Michele Mostarda
 
Shooting rabbits with sling
Tomasz Rękawek
 
Introducing JSR-283
David Nuescheler
 
JCR and ModeShape
Jozef Chocholacek
 
Building enterprise web applications with spring 3
Abdelmonaim Remani
 
What's new in JSR-283?
David Nuescheler
 
Rapid JCR applications development with Sling
Bertrand Delacretaz
 
Ad

More from Jukka Zitting (6)

PPT
Text and metadata extraction with Apache Tika
Jukka Zitting
 
PPT
Mime Magic With Apache Tika
Jukka Zitting
 
PPT
NoSQL Oakland
Jukka Zitting
 
PPT
File System On Steroids
Jukka Zitting
 
PPT
Design and architecture of Jackrabbit
Jukka Zitting
 
PPT
Apache Tika
Jukka Zitting
 
Text and metadata extraction with Apache Tika
Jukka Zitting
 
Mime Magic With Apache Tika
Jukka Zitting
 
NoSQL Oakland
Jukka Zitting
 
File System On Steroids
Jukka Zitting
 
Design and architecture of Jackrabbit
Jukka Zitting
 
Apache Tika
Jukka Zitting
 

Recently uploaded (20)

PDF
Simplify React app login with asgardeo-sdk
vaibhav289687
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PPTX
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
PPTX
Smart Doctor Appointment Booking option in odoo.pptx
AxisTechnolabs
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
Simplify React app login with asgardeo-sdk
vaibhav289687
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
Smart Doctor Appointment Booking option in odoo.pptx
AxisTechnolabs
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 

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

  • 2. 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?
  • 4. Repository structure Repository Workspace A Workspace B Workspace C /jcr:system
  • 5. … or more commonly Repository default workspace /jcr:system
  • 6. Workspace structure Root node / /jcr:systemNode /a Node /a/cNode /a/b a b c jcr:system
  • 7. 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]
  • 9. 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…
  • 10. 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
  • 11. 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 - …
  • 12. 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
  • 16. 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
  • 17. 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
  • 19. mix:referenceable - jcr:uuid = c6d27a10-bf23-11e3-b1b6-0800200c9a66 References - seeAlso = c6d27a10-bf23-11e3-b…
  • 20. 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
  • 22. 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
  • 24. 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’)]
  • 25. 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
  • 26. 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
  • 28. 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
  • 30. Persistence managers Repository Workspace A Workspace B Workspace C /jcr:system Persistence Manager 1 Persistence Manager 2 Persistence Manager 3 Persistence Manager 4
  • 31. Persistence alternatives Embedded Database PM Derby, H2 External Database PM PostgreSQL, Oracle, etc.
  • 32. Data store Repository Workspace A /jcr:system Persistence Manager 1 Persistence Manager 2 Data Store
  • 33. Data store alternatives File Data Store Local FS, NFS Database Data Store S3 Data Store PostgreSQL, Oracle, etc. S3
  • 36. 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
  • 37. 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
  • 38. 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