SlideShare a Scribd company logo
Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)
Overview What to expect Apache Jackrabbit JCR content modeling Best practices Things to watch for Engineering perspective What not to expect Source code Live demo Business perspective Management perspective
Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
Apache Jackrabbit JSR 170 reference implementation Apache TLP since 2006 Looking back 1.0: April 2006 1.1: October 2006 1.2: January 2007 1.3: April 2007 Looking forward (tentative) 1.4: 2007 2.0: 2008 (JCR 2.0 RI) [email_address] Components Core, API, RMI, WebDAV, webapp, JCA, … http://jackrabbit.apache.org/
Apache Jackrabbit: Words of advice Read (or browse) the JCR specification jcr-1.0.jar included Getting started with Jackrabbit jackrabbit-webapp: Drop-in deployment First Hops: Embedded repository Take your time Resources Mailing lists: Excellent support, but may delay you Website: Some good parts, but not complete or very well structured Wiki: End user experience (especially for JBoss) FAQ: outdated Issue tracker: Good response time
Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
Introducing JCR Tunes JCR example application “ How to implement a music store or library with JCR?” Designed to showcase JCR features and best practices JCR book in progress Store and manage individual “tunes”, optionally organized in albums, etc. Support alternative views like predefined genres, or more ad-hoc searches Integrated handling of reviews, cover images, and other related content Staged publishing and timed releases of tunes or albums Personalization for things like settings, favorites, personal play-lists, etc. Extensibility and flexibility
Starting point: Leverage the standard node types Type hierarchy Content hierarchy nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource
Bottom-up modeling: Content types my:resource > nt:resource codec (string) bitrate (long) my:tune > nt:file artist (string) release date (date) my:album > nt:folder artist (string) release date (date) my:review > nt:file author (string) star rating (long)
Top-down modeling: Content hierarchies Album Images Tune Band Label Label Tune Album Reviews Label Band Reviews Tune Images
Content Modeling: Words of advice Namespaces Use a single namespace per company or application Use a reasonably unique namespace prefix Prefixed names for structured content Default namespace for unstructured content Use an application root node, /my:content Good for searching, backup, and migration Avoid flat hierarchies User interface complexity Jackrabbit performance Content-driven design Design your content before your application
Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
Alternative Views: References Rock tags tunes Tune Tune Classic Top 10 playlists Picks link link link
Alternative Views: Search SELECT * FROM my:review WHERE jcr:path LIKE ‘/my:tunes/%’ AND CONTAINS(*,‘…’) /jcr:root/my:tunes//element(*,my:review) /jcr:content[jcr:contains(.,’…’)] Reviews with keywords SELECT * FROM my:tune WHERE jcr:path LIKE ‘/my:tunes/%’ AND released > DATE ‘…’ /jcr:root/my:tunes//element(*,my:tune) [@released > xs:dateTime(‘…’)] Latest releases SQL XPath Looking for
Alternative Views: Words of advice Moderate use of references Circular references only within a subtree Plan for backup and content migration Jackrabbit performance: max 10k references to a single node Best search performance when selecting a small subset of content No joins or aggregate searches Full text indexing of binary properties only for jcr:data in nt:resource nodes Formatting date queries ISO 8601 as the string format session.getValueFactory().createValue(Calendar.getInstance()).getString() JCR 2.0: Query Object Model? Mandatory SQL?
Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
Staged Publishing: Versioning Version store Live Staging
Personalization tunes Tune Tune John users Jane playlists tunes link link favorites
Authentication and Authorization Java Authentication and Authorization Services (JAAS) Mostly the authentication part is currently used by Jackrabbit Pluggable authentication components Support for single sing-on Custom AccessManager interface in Jackrabbit Pluggable authorization components The default implementation supports only global read, write, and admin access More advanced implementations are proprietary Repository-level authentication and authorization applies to all clients Better than application-level authorization
Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
Last words Everything is content Application content HTML pages, CSS and JavaScript files, static images JSP pages, Java classes and libraries Documentation, resource bundles, etc. With versioning, export/import, full text search, etc. Web-friendly Trivial URI mapping WebDAV access for free Dispatch on node type, not on URI path In your application?
Jukka Zitting http://www.day.com/ Day Software [email_address] Apache Jackrabbit http://jackrabbit.apache.org/ [email_address] Apache Software Foundation http://www.apache.org/

More Related Content

What's hot (20)

PDF
Building Advanced XSS Vectors
Rodolfo Assis (Brute)
 
PPTX
ECS+Locust로 부하 테스트 진행하기
Yungon Park
 
ODP
Introduction to JCR and Apache Jackrabbi
Jukka Zitting
 
PPTX
Oak, the architecture of Apache Jackrabbit 3
Jukka Zitting
 
PDF
Apache Jackrabbit Oak on MongoDB
MongoDB
 
PDF
CSS Dasar #9 : Inheritance
Sandhika Galih
 
PDF
스프링 시큐리티 구조 이해
beom kyun choi
 
PDF
HTTP Security Headers
Ismael Goncalves
 
ODP
Deep Dive Into Elasticsearch
Knoldus Inc.
 
ODP
Elasticsearch presentation 1
Maruf Hassan
 
PDF
How to build a chat application with react js, nodejs, and socket.io
Katy Slemon
 
PDF
Elastic Search (엘라스틱서치) 입문
SeungHyun Eom
 
PDF
Side by Side with Elasticsearch & Solr, Part 2
Sematext Group, Inc.
 
PPTX
Elastic search overview
ABC Talks
 
PPTX
REST API 설계
Terry Cho
 
PDF
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park
 
PPT
Advanced Cascading Style Sheets
fantasticdigitaltools
 
ODP
Elasticsearch for beginners
Neil Baker
 
PDF
MongoDB World 2019: The Sights (and Smells) of a Bad Query
MongoDB
 
Building Advanced XSS Vectors
Rodolfo Assis (Brute)
 
ECS+Locust로 부하 테스트 진행하기
Yungon Park
 
Introduction to JCR and Apache Jackrabbi
Jukka Zitting
 
Oak, the architecture of Apache Jackrabbit 3
Jukka Zitting
 
Apache Jackrabbit Oak on MongoDB
MongoDB
 
CSS Dasar #9 : Inheritance
Sandhika Galih
 
스프링 시큐리티 구조 이해
beom kyun choi
 
HTTP Security Headers
Ismael Goncalves
 
Deep Dive Into Elasticsearch
Knoldus Inc.
 
Elasticsearch presentation 1
Maruf Hassan
 
How to build a chat application with react js, nodejs, and socket.io
Katy Slemon
 
Elastic Search (엘라스틱서치) 입문
SeungHyun Eom
 
Side by Side with Elasticsearch & Solr, Part 2
Sematext Group, Inc.
 
Elastic search overview
ABC Talks
 
REST API 설계
Terry Cho
 
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park
 
Advanced Cascading Style Sheets
fantasticdigitaltools
 
Elasticsearch for beginners
Neil Baker
 
MongoDB World 2019: The Sights (and Smells) of a Bad Query
MongoDB
 

Viewers also liked (20)

PDF
Apache Jackrabbit
elliando dias
 
PPTX
Apache Jackrabbit @ Swiss Open Source Awards 2011
Jukka Zitting
 
PPTX
Repository performance tuning
Jukka Zitting
 
PPTX
The new repository in AEM 6
Jukka Zitting
 
PDF
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
Magnolia
 
PDF
CMIS Apache Jackrabbit Sandbox
David Nuescheler
 
PDF
Introduccion jee
Miguel Machaca
 
PDF
Flexible search in Apache Jackrabbit Oak
Tommaso Teofili
 
PDF
Data replication in Sling
Tommaso Teofili
 
KEY
Magnolia CMS 5.0 - Architecture
Philipp Bärfuss
 
PDF
Spring and Web Content Management
Zak Greant
 
PDF
RESTful Web Applications with Apache Sling
Bertrand Delacretaz
 
PPTX
Intro to Alfresco for Developers
Jeff Potts
 
PPTX
Oak, the Architecture of the new Repository
Michael Dürig
 
PPTX
Getting Started with CMIS
Jeff Potts
 
PPTX
New Repository in AEM 6 by Michael Marth
AEM HUB
 
PDF
Enabling co-­creation of e-services through virtual worlds
Thomas Kohler
 
PPTX
Herodesov chram
Cirkev bratská Svätý Jur
 
PDF
新浪云平台的经验和教训
easychen
 
PPT
Last+Daily+Log+2compresed+Graphics
Colleen Graves
 
Apache Jackrabbit
elliando dias
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Jukka Zitting
 
Repository performance tuning
Jukka Zitting
 
The new repository in AEM 6
Jukka Zitting
 
Recorrido por el Content Repository API para Java (JCR), analizando JackRabbit
Magnolia
 
CMIS Apache Jackrabbit Sandbox
David Nuescheler
 
Introduccion jee
Miguel Machaca
 
Flexible search in Apache Jackrabbit Oak
Tommaso Teofili
 
Data replication in Sling
Tommaso Teofili
 
Magnolia CMS 5.0 - Architecture
Philipp Bärfuss
 
Spring and Web Content Management
Zak Greant
 
RESTful Web Applications with Apache Sling
Bertrand Delacretaz
 
Intro to Alfresco for Developers
Jeff Potts
 
Oak, the Architecture of the new Repository
Michael Dürig
 
Getting Started with CMIS
Jeff Potts
 
New Repository in AEM 6 by Michael Marth
AEM HUB
 
Enabling co-­creation of e-services through virtual worlds
Thomas Kohler
 
新浪云平台的经验和教训
easychen
 
Last+Daily+Log+2compresed+Graphics
Colleen Graves
 
Ad

Similar to Content Management With Apache Jackrabbit (20)

PDF
862
day
 
PPT
JCR Content Management
elliando dias
 
PPT
The return of the hierarchical model
Jukka Zitting
 
PDF
Apache Con Us2007 Jcr In Action
day
 
PDF
JCR - Java Content Repositories
Carsten Ziegeler
 
PPT
Jackrabbit Roadmap
day
 
PDF
2008-12 OJUG JCR Demo
Paul Heaberlin
 
PPTX
Shooting rabbits with sling
Tomasz Rękawek
 
PDF
JCR In Action (ApacheCon US 2007)
Carsten Ziegeler
 
PDF
JCR In Action (ApacheCon EU 2008)
Carsten Ziegeler
 
PPTX
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Craig Dickson
 
PDF
JCR and Sling Quick Dive
Paolo Mottadelli
 
PDF
A Content Repository for TYPO3 5.0
Karsten Dambekalns
 
PDF
JSR107 State of the Union JavaOne 2013
Hazelcast
 
PDF
µjax in 30 minutes (for Stockholm)
Lars Trieloff
 
PDF
µjax in 30 minutes (for Stockholm)
guestf67bc2
 
PDF
µjax in 30 minutes
Lars Trieloff
 
PDF
Top 8 WCM Trends 2010
David Nuescheler
 
PPTX
Web Apps atop a Content Repository
Gabriel Walt
 
PPTX
AJ.pptx
ShuvraKantiMandal
 
862
day
 
JCR Content Management
elliando dias
 
The return of the hierarchical model
Jukka Zitting
 
Apache Con Us2007 Jcr In Action
day
 
JCR - Java Content Repositories
Carsten Ziegeler
 
Jackrabbit Roadmap
day
 
2008-12 OJUG JCR Demo
Paul Heaberlin
 
Shooting rabbits with sling
Tomasz Rękawek
 
JCR In Action (ApacheCon US 2007)
Carsten Ziegeler
 
JCR In Action (ApacheCon EU 2008)
Carsten Ziegeler
 
Rapid RESTful Web Applications with Apache Sling and Jackrabbit
Craig Dickson
 
JCR and Sling Quick Dive
Paolo Mottadelli
 
A Content Repository for TYPO3 5.0
Karsten Dambekalns
 
JSR107 State of the Union JavaOne 2013
Hazelcast
 
µjax in 30 minutes (for Stockholm)
Lars Trieloff
 
µjax in 30 minutes (for Stockholm)
guestf67bc2
 
µjax in 30 minutes
Lars Trieloff
 
Top 8 WCM Trends 2010
David Nuescheler
 
Web Apps atop a Content Repository
Gabriel Walt
 
Ad

More from Jukka Zitting (12)

PPTX
Apache development with GitHub and Travis CI
Jukka Zitting
 
PPTX
MicroKernel & NodeStore
Jukka Zitting
 
KEY
Open source masterclass - Life in the Apache Incubator
Jukka Zitting
 
KEY
Content extraction with apache tika
Jukka Zitting
 
PPTX
OSGifying the repository
Jukka Zitting
 
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
Mime Magic With Apache Tika
Jukka Zitting
 
PPT
Design and architecture of Jackrabbit
Jukka Zitting
 
PPT
Apache Tika
Jukka Zitting
 
Apache development with GitHub and Travis CI
Jukka Zitting
 
MicroKernel & NodeStore
Jukka Zitting
 
Open source masterclass - Life in the Apache Incubator
Jukka Zitting
 
Content extraction with apache tika
Jukka Zitting
 
OSGifying the repository
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
 
Mime Magic With Apache Tika
Jukka Zitting
 
Design and architecture of Jackrabbit
Jukka Zitting
 
Apache Tika
Jukka Zitting
 

Recently uploaded (20)

PDF
Maksym Vyshnivetskyi: Управління якістю (UA)
Lviv Startup Club
 
PDF
MusicVideoTreatmentForFreebyParrisLaVon.pdf
gamilton
 
PDF
Your Best Year Yet​ Create a Sharp, Focused AOP for FY2026​
ChristopherVicGamuya
 
PDF
Natesan Thanthoni: The Agile Visionary Transforming Virbac IMEA (India, Middl...
red402426
 
PDF
How do we fix the Messed Up Corporation’s System diagram?
YukoSoma
 
DOCX
Top Digital Marketing Services Company | Fusion Digitech
ketulraval6
 
PDF
REPORT WRITING for Internal Auditors (considering IIA's Global Internal Audit...
Abdullah Mohammed
 
PDF
John Polit: Strategic Leadership & Growth Advisor for the Modern Business World
John Polit
 
PPTX
Financing_Beetle_Farming_within kenyanKenya.pptx
ryan269603
 
PDF
Corporate Social Responsibility and Ethical Practices in the Readymade Garmen...
Samsul Alam
 
PPTX
Manuscript and Types of Headings used in EDPM.pptx
RosanHaye1
 
PDF
Vedanta Group Sets High Standards in Tax Contribution.
Vedanta Cases
 
PPTX
Jessica Garza: At the Intersection of Technology and Humanity
Jessica Garza
 
PDF
Matthew Muckey - A Distinguished Classical Trumpet Player
Matthew Muckey
 
PDF
How is IMSLP Wagner Connected with Pachelbel & Shostakovich.pdf
SheetMusic International
 
PDF
A Brief Introduction About Dorian Fenwick
Dorian Fenwick
 
PDF
Books on Display in the Library June 2025 - Matariki
NZSG
 
PDF
The Canvas of Creative Mastery Newsletter_June 2025
AmirYakdi
 
PPTX
Black life TeleHealth 3 (1).pptx Business Plan
mdthelackyboy
 
PDF
CFG application - 2025 - Curtis Funding Group, LLC
Curt MacRae
 
Maksym Vyshnivetskyi: Управління якістю (UA)
Lviv Startup Club
 
MusicVideoTreatmentForFreebyParrisLaVon.pdf
gamilton
 
Your Best Year Yet​ Create a Sharp, Focused AOP for FY2026​
ChristopherVicGamuya
 
Natesan Thanthoni: The Agile Visionary Transforming Virbac IMEA (India, Middl...
red402426
 
How do we fix the Messed Up Corporation’s System diagram?
YukoSoma
 
Top Digital Marketing Services Company | Fusion Digitech
ketulraval6
 
REPORT WRITING for Internal Auditors (considering IIA's Global Internal Audit...
Abdullah Mohammed
 
John Polit: Strategic Leadership & Growth Advisor for the Modern Business World
John Polit
 
Financing_Beetle_Farming_within kenyanKenya.pptx
ryan269603
 
Corporate Social Responsibility and Ethical Practices in the Readymade Garmen...
Samsul Alam
 
Manuscript and Types of Headings used in EDPM.pptx
RosanHaye1
 
Vedanta Group Sets High Standards in Tax Contribution.
Vedanta Cases
 
Jessica Garza: At the Intersection of Technology and Humanity
Jessica Garza
 
Matthew Muckey - A Distinguished Classical Trumpet Player
Matthew Muckey
 
How is IMSLP Wagner Connected with Pachelbel & Shostakovich.pdf
SheetMusic International
 
A Brief Introduction About Dorian Fenwick
Dorian Fenwick
 
Books on Display in the Library June 2025 - Matariki
NZSG
 
The Canvas of Creative Mastery Newsletter_June 2025
AmirYakdi
 
Black life TeleHealth 3 (1).pptx Business Plan
mdthelackyboy
 
CFG application - 2025 - Curtis Funding Group, LLC
Curt MacRae
 

Content Management With Apache Jackrabbit

  • 1. Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)
  • 2. Overview What to expect Apache Jackrabbit JCR content modeling Best practices Things to watch for Engineering perspective What not to expect Source code Live demo Business perspective Management perspective
  • 3. Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
  • 4. Apache Jackrabbit JSR 170 reference implementation Apache TLP since 2006 Looking back 1.0: April 2006 1.1: October 2006 1.2: January 2007 1.3: April 2007 Looking forward (tentative) 1.4: 2007 2.0: 2008 (JCR 2.0 RI) [email_address] Components Core, API, RMI, WebDAV, webapp, JCA, … http://jackrabbit.apache.org/
  • 5. Apache Jackrabbit: Words of advice Read (or browse) the JCR specification jcr-1.0.jar included Getting started with Jackrabbit jackrabbit-webapp: Drop-in deployment First Hops: Embedded repository Take your time Resources Mailing lists: Excellent support, but may delay you Website: Some good parts, but not complete or very well structured Wiki: End user experience (especially for JBoss) FAQ: outdated Issue tracker: Good response time
  • 6. Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
  • 7. Introducing JCR Tunes JCR example application “ How to implement a music store or library with JCR?” Designed to showcase JCR features and best practices JCR book in progress Store and manage individual “tunes”, optionally organized in albums, etc. Support alternative views like predefined genres, or more ad-hoc searches Integrated handling of reviews, cover images, and other related content Staged publishing and timed releases of tunes or albums Personalization for things like settings, favorites, personal play-lists, etc. Extensibility and flexibility
  • 8. Starting point: Leverage the standard node types Type hierarchy Content hierarchy nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource
  • 9. Bottom-up modeling: Content types my:resource > nt:resource codec (string) bitrate (long) my:tune > nt:file artist (string) release date (date) my:album > nt:folder artist (string) release date (date) my:review > nt:file author (string) star rating (long)
  • 10. Top-down modeling: Content hierarchies Album Images Tune Band Label Label Tune Album Reviews Label Band Reviews Tune Images
  • 11. Content Modeling: Words of advice Namespaces Use a single namespace per company or application Use a reasonably unique namespace prefix Prefixed names for structured content Default namespace for unstructured content Use an application root node, /my:content Good for searching, backup, and migration Avoid flat hierarchies User interface complexity Jackrabbit performance Content-driven design Design your content before your application
  • 12. Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
  • 13. Alternative Views: References Rock tags tunes Tune Tune Classic Top 10 playlists Picks link link link
  • 14. Alternative Views: Search SELECT * FROM my:review WHERE jcr:path LIKE ‘/my:tunes/%’ AND CONTAINS(*,‘…’) /jcr:root/my:tunes//element(*,my:review) /jcr:content[jcr:contains(.,’…’)] Reviews with keywords SELECT * FROM my:tune WHERE jcr:path LIKE ‘/my:tunes/%’ AND released > DATE ‘…’ /jcr:root/my:tunes//element(*,my:tune) [@released > xs:dateTime(‘…’)] Latest releases SQL XPath Looking for
  • 15. Alternative Views: Words of advice Moderate use of references Circular references only within a subtree Plan for backup and content migration Jackrabbit performance: max 10k references to a single node Best search performance when selecting a small subset of content No joins or aggregate searches Full text indexing of binary properties only for jcr:data in nt:resource nodes Formatting date queries ISO 8601 as the string format session.getValueFactory().createValue(Calendar.getInstance()).getString() JCR 2.0: Query Object Model? Mandatory SQL?
  • 16. Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
  • 17. Staged Publishing: Versioning Version store Live Staging
  • 18. Personalization tunes Tune Tune John users Jane playlists tunes link link favorites
  • 19. Authentication and Authorization Java Authentication and Authorization Services (JAAS) Mostly the authentication part is currently used by Jackrabbit Pluggable authentication components Support for single sing-on Custom AccessManager interface in Jackrabbit Pluggable authorization components The default implementation supports only global read, write, and admin access More advanced implementations are proprietary Repository-level authentication and authorization applies to all clients Better than application-level authorization
  • 20. Agenda Apache Jackrabbit Basic content modeling References and search Advanced features Summary and questions
  • 21. Last words Everything is content Application content HTML pages, CSS and JavaScript files, static images JSP pages, Java classes and libraries Documentation, resource bundles, etc. With versioning, export/import, full text search, etc. Web-friendly Trivial URI mapping WebDAV access for free Dispatch on node type, not on URI path In your application?
  • 22. Jukka Zitting http://www.day.com/ Day Software [email_address] Apache Jackrabbit http://jackrabbit.apache.org/ [email_address] Apache Software Foundation http://www.apache.org/