SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Content Management with
Apache Jackrabbit



Jukka Zitting
Day Software
(862)
2


Overview

What to ex pect               What not to expect
> Apache Jackrabbit           > Source code
>                             >
    JCR content modeling          Live demo
>                             >
    Best practices                Business perspective
>                             >
    Things to watch for           Management perspective
>   Engineering 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)
    –   announce-
        subscribe@jackrabbit.apache.org
                                               http:/ / jackrabbit.apache.org/
>   Components
    – Core, API, RMI, WebDAV, webapp, JCA, …
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: Ex cellent support, but may delay you
  – Website: Some good parts, but not complete or very well structured
  – Wiki: End user ex perience (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.
> Ex tensibility and flex ibility
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:album > nt:folder
   - artist (string)
                                          my:review > nt:file
   - release date (date)
                                          - author (string)
                                          - star rating (long)
        my:tune > nt:file
        - artist (string)
        - release date (date)

              my:resource > nt:resource
              - codec (string)
              - bitrate (long)
10


Top- down modeling: Content hierarchies


                        Label           Label


                 Band                            Label


         Album           Album                       Band


     Reviews      Tune          Tune            Images      Tune


                        Reviews    Images
11


Content Modeling: Words of advice

> Namespaces
  – Use a single namespace per company or application
  – Use a reasonably unique namespace prefix
  –   Prefix ed 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 complex ity
  –   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




         tags                tunes           playlists


                      Tune
  Rock      Classic                      Top 10          Picks


                                      link        link           link
                               Tune
14


Alternative Views: Search

Looking    XPath                                     SQL
for
Latest     / jcr:root/ my:tunes/ / element(*,my:tu   SELECT * FROM my:tune
releases   ne)                                       WHERE
           [@released > xs:dateTime(‘…’)]            jcr:path LIKE ‘/ my:tunes/ %’
                                                     AND released > DATE ‘…’

Reviews    / jcr:root/ my:tunes/ / element(*,my:re   SELECT * FROM my:review
with       view)                                     WHERE
keywords   / jcr:content[jcr:contains(.,’…’)]        jcr:path LIKE ‘/ my:tunes/ %’
                                                     AND CONTAINS(*,‘…’)
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 index ing 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




         Staging                   Live
18


Personalization



           tunes                      users


    Tune                           John         Jane


                           tunes          favorites playlists
             Tune

                    link           link
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, ex port/ import, full tex t 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                      jukka.zitting@day.com



Apache Jackrabbit
http:/ / jackrabbit.apache.org/

users@jackrabbit.apache.org


Apache Software Foundation        http:/ / www.apache.org/

Weitere ähnliche Inhalte

Was ist angesagt?

20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorial
Chris Huang
 
Learning to code for startup mvp session 3
Learning to code for startup mvp session 3Learning to code for startup mvp session 3
Learning to code for startup mvp session 3
Henry S
 
Decoupled Libraries for PHP
Decoupled Libraries for PHPDecoupled Libraries for PHP
Decoupled Libraries for PHP
Paul Jones
 
Android App Development 06 : Network & Web Services
Android App Development 06 : Network & Web ServicesAndroid App Development 06 : Network & Web Services
Android App Development 06 : Network & Web Services
Anuchit Chalothorn
 
Django Framework and Application Structure
Django Framework and Application StructureDjango Framework and Application Structure
Django Framework and Application Structure
SEONGTAEK OH
 

Was ist angesagt? (14)

Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
RESTful Web Services with Jersey
RESTful Web Services with JerseyRESTful Web Services with Jersey
RESTful Web Services with Jersey
 
20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorial
 
Learning to code for startup mvp session 3
Learning to code for startup mvp session 3Learning to code for startup mvp session 3
Learning to code for startup mvp session 3
 
JSON in Solr: from top to bottom
JSON in Solr: from top to bottomJSON in Solr: from top to bottom
JSON in Solr: from top to bottom
 
8b. Column Oriented Databases Lab
8b. Column Oriented Databases Lab8b. Column Oriented Databases Lab
8b. Column Oriented Databases Lab
 
Apache Solr - Enterprise search platform
Apache Solr - Enterprise search platformApache Solr - Enterprise search platform
Apache Solr - Enterprise search platform
 
Callimachus
CallimachusCallimachus
Callimachus
 
ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!ElasticSearch: Найдется все... и быстро!
ElasticSearch: Найдется все... и быстро!
 
Mavenppt
MavenpptMavenppt
Mavenppt
 
Decoupled Libraries for PHP
Decoupled Libraries for PHPDecoupled Libraries for PHP
Decoupled Libraries for PHP
 
Android App Development 06 : Network & Web Services
Android App Development 06 : Network & Web ServicesAndroid App Development 06 : Network & Web Services
Android App Development 06 : Network & Web Services
 
Django Framework and Application Structure
Django Framework and Application StructureDjango Framework and Application Structure
Django Framework and Application Structure
 
Dandelion 0.10.0
Dandelion 0.10.0Dandelion 0.10.0
Dandelion 0.10.0
 

Andere mochten auch (7)

805
805805
805
 
916920
916920916920
916920
 
916920
916920916920
916920
 
Xavi b
Xavi bXavi b
Xavi b
 
unidad5-seccionaurea
unidad5-seccionaureaunidad5-seccionaurea
unidad5-seccionaurea
 
HOW TO HACK WECHAT BY COMPUTER
HOW TO HACK WECHAT BY COMPUTER HOW TO HACK WECHAT BY COMPUTER
HOW TO HACK WECHAT BY COMPUTER
 
84840 633555865548906250 (1)
84840 633555865548906250 (1)84840 633555865548906250 (1)
84840 633555865548906250 (1)
 

Ähnlich wie 862

Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
Jukka Zitting
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
Jukka Zitting
 
CTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should KnowCTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should Know
Spiffy
 

Ähnlich wie 862 (20)

Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Rails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search EngineRails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search Engine
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in Mule
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
Maven in Mule
Maven in MuleMaven in Mule
Maven in Mule
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
 
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into LuceneLuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
 
JCR and ModeShape
JCR and ModeShapeJCR and ModeShape
JCR and ModeShape
 
Introducing the Jahia Log Analyzer
Introducing the Jahia Log AnalyzerIntroducing the Jahia Log Analyzer
Introducing the Jahia Log Analyzer
 
Storm crawler apachecon_na_2015
Storm crawler apachecon_na_2015Storm crawler apachecon_na_2015
Storm crawler apachecon_na_2015
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
CTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should KnowCTU June 2011 - Things that Every ASP.NET Developer Should Know
CTU June 2011 - Things that Every ASP.NET Developer Should Know
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with Maven
 
Spark Saturday: Spark SQL & DataFrame Workshop with Apache Spark 2.3
Spark Saturday: Spark SQL & DataFrame Workshop with Apache Spark 2.3Spark Saturday: Spark SQL & DataFrame Workshop with Apache Spark 2.3
Spark Saturday: Spark SQL & DataFrame Workshop with Apache Spark 2.3
 
mjprof: Monadic approach for JVM profiling
mjprof: Monadic approach for JVM profilingmjprof: Monadic approach for JVM profiling
mjprof: Monadic approach for JVM profiling
 

Mehr von day

Performance Pack
Performance PackPerformance Pack
Performance Pack
day
 
Scala for scripting
Scala for scriptingScala for scripting
Scala for scripting
day
 
Scala4sling
Scala4slingScala4sling
Scala4sling
day
 
Testing Zen
Testing ZenTesting Zen
Testing Zen
day
 
Java Persistence Frameworks
Java Persistence FrameworksJava Persistence Frameworks
Java Persistence Frameworks
day
 
Embrace OSGi Apache Con Europe2009
Embrace OSGi Apache Con Europe2009Embrace OSGi Apache Con Europe2009
Embrace OSGi Apache Con Europe2009
day
 
Scripting Yor Java Application with BSF3
Scripting Yor Java Application with BSF3Scripting Yor Java Application with BSF3
Scripting Yor Java Application with BSF3
day
 
Tarpm Clustering
Tarpm ClusteringTarpm Clustering
Tarpm Clustering
day
 
Tech Summit 08 Support Initiative
Tech Summit 08 Support InitiativeTech Summit 08 Support Initiative
Tech Summit 08 Support Initiative
day
 
Non Cms For Web Apps
Non Cms For Web AppsNon Cms For Web Apps
Non Cms For Web Apps
day
 
Getting Into The Flow With Cq Dam
Getting Into The Flow With Cq DamGetting Into The Flow With Cq Dam
Getting Into The Flow With Cq Dam
day
 
Dispatcher Oom
Dispatcher OomDispatcher Oom
Dispatcher Oom
day
 
Advanced Collaboration And Beyond
Advanced Collaboration And BeyondAdvanced Collaboration And Beyond
Advanced Collaboration And Beyond
day
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
day
 
Jackrabbit Roadmap
Jackrabbit RoadmapJackrabbit Roadmap
Jackrabbit Roadmap
day
 
Doc Book Vs Dita
Doc Book Vs DitaDoc Book Vs Dita
Doc Book Vs Dita
day
 
Doc Book Vs Dita Teresa
Doc Book Vs Dita TeresaDoc Book Vs Dita Teresa
Doc Book Vs Dita Teresa
day
 
Apache Con Us2007 Sanselan
Apache Con Us2007 SanselanApache Con Us2007 Sanselan
Apache Con Us2007 Sanselan
day
 
Apache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In ActionApache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In Action
day
 
Apache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei BatisApache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei Batis
day
 

Mehr von day (20)

Performance Pack
Performance PackPerformance Pack
Performance Pack
 
Scala for scripting
Scala for scriptingScala for scripting
Scala for scripting
 
Scala4sling
Scala4slingScala4sling
Scala4sling
 
Testing Zen
Testing ZenTesting Zen
Testing Zen
 
Java Persistence Frameworks
Java Persistence FrameworksJava Persistence Frameworks
Java Persistence Frameworks
 
Embrace OSGi Apache Con Europe2009
Embrace OSGi Apache Con Europe2009Embrace OSGi Apache Con Europe2009
Embrace OSGi Apache Con Europe2009
 
Scripting Yor Java Application with BSF3
Scripting Yor Java Application with BSF3Scripting Yor Java Application with BSF3
Scripting Yor Java Application with BSF3
 
Tarpm Clustering
Tarpm ClusteringTarpm Clustering
Tarpm Clustering
 
Tech Summit 08 Support Initiative
Tech Summit 08 Support InitiativeTech Summit 08 Support Initiative
Tech Summit 08 Support Initiative
 
Non Cms For Web Apps
Non Cms For Web AppsNon Cms For Web Apps
Non Cms For Web Apps
 
Getting Into The Flow With Cq Dam
Getting Into The Flow With Cq DamGetting Into The Flow With Cq Dam
Getting Into The Flow With Cq Dam
 
Dispatcher Oom
Dispatcher OomDispatcher Oom
Dispatcher Oom
 
Advanced Collaboration And Beyond
Advanced Collaboration And BeyondAdvanced Collaboration And Beyond
Advanced Collaboration And Beyond
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
 
Jackrabbit Roadmap
Jackrabbit RoadmapJackrabbit Roadmap
Jackrabbit Roadmap
 
Doc Book Vs Dita
Doc Book Vs DitaDoc Book Vs Dita
Doc Book Vs Dita
 
Doc Book Vs Dita Teresa
Doc Book Vs Dita TeresaDoc Book Vs Dita Teresa
Doc Book Vs Dita Teresa
 
Apache Con Us2007 Sanselan
Apache Con Us2007 SanselanApache Con Us2007 Sanselan
Apache Con Us2007 Sanselan
 
Apache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In ActionApache Con Us2007 Jcr In Action
Apache Con Us2007 Jcr In Action
 
Apache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei BatisApache Con Us2007 Apachei Batis
Apache Con Us2007 Apachei Batis
 

Kürzlich hochgeladen

zidauu _business communication.pptx /pdf
zidauu _business  communication.pptx /pdfzidauu _business  communication.pptx /pdf
zidauu _business communication.pptx /pdf
zukhrafshabbir
 

Kürzlich hochgeladen (20)

How to refresh to be fit for the future world
How to refresh to be fit for the future worldHow to refresh to be fit for the future world
How to refresh to be fit for the future world
 
Equinox Gold Corporate Deck May 24th 2024
Equinox Gold Corporate Deck May 24th 2024Equinox Gold Corporate Deck May 24th 2024
Equinox Gold Corporate Deck May 24th 2024
 
Engagement Rings vs Promise Rings | Detailed Guide
Engagement Rings vs Promise Rings | Detailed GuideEngagement Rings vs Promise Rings | Detailed Guide
Engagement Rings vs Promise Rings | Detailed Guide
 
Blinkit: Revolutionizing the On-Demand Grocery Delivery Service.pptx
Blinkit: Revolutionizing the On-Demand Grocery Delivery Service.pptxBlinkit: Revolutionizing the On-Demand Grocery Delivery Service.pptx
Blinkit: Revolutionizing the On-Demand Grocery Delivery Service.pptx
 
بروفايل شركة ميار الخليج للاستشارات الهندسية.pdf
بروفايل شركة ميار الخليج للاستشارات الهندسية.pdfبروفايل شركة ميار الخليج للاستشارات الهندسية.pdf
بروفايل شركة ميار الخليج للاستشارات الهندسية.pdf
 
TriStar Gold Corporate Presentation May 2024
TriStar Gold Corporate Presentation May 2024TriStar Gold Corporate Presentation May 2024
TriStar Gold Corporate Presentation May 2024
 
Vendors of country report usefull datass
Vendors of country report usefull datassVendors of country report usefull datass
Vendors of country report usefull datass
 
Inside the Black Box of Venture Capital (VC)
Inside the Black Box of Venture Capital (VC)Inside the Black Box of Venture Capital (VC)
Inside the Black Box of Venture Capital (VC)
 
zidauu _business communication.pptx /pdf
zidauu _business  communication.pptx /pdfzidauu _business  communication.pptx /pdf
zidauu _business communication.pptx /pdf
 
Falcon Invoice Discounting Setup for Small Businesses
Falcon Invoice Discounting Setup for Small BusinessesFalcon Invoice Discounting Setup for Small Businesses
Falcon Invoice Discounting Setup for Small Businesses
 
HAL Financial Performance Analysis and Future Prospects
HAL Financial Performance Analysis and Future ProspectsHAL Financial Performance Analysis and Future Prospects
HAL Financial Performance Analysis and Future Prospects
 
Unveiling the Dynamic Gemini_ Personality Traits and Sign Dates.pptx
Unveiling the Dynamic Gemini_ Personality Traits and Sign Dates.pptxUnveiling the Dynamic Gemini_ Personality Traits and Sign Dates.pptx
Unveiling the Dynamic Gemini_ Personality Traits and Sign Dates.pptx
 
Toyota Kata Coaching for Agile Teams & Transformations
Toyota Kata Coaching for Agile Teams & TransformationsToyota Kata Coaching for Agile Teams & Transformations
Toyota Kata Coaching for Agile Teams & Transformations
 
How to Maintain Healthy Life style.pptx
How to Maintain  Healthy Life style.pptxHow to Maintain  Healthy Life style.pptx
How to Maintain Healthy Life style.pptx
 
Copyright: What Creators and Users of Art Need to Know
Copyright: What Creators and Users of Art Need to KnowCopyright: What Creators and Users of Art Need to Know
Copyright: What Creators and Users of Art Need to Know
 
8 Questions B2B Commercial Teams Can Ask To Help Product Discovery
8 Questions B2B Commercial Teams Can Ask To Help Product Discovery8 Questions B2B Commercial Teams Can Ask To Help Product Discovery
8 Questions B2B Commercial Teams Can Ask To Help Product Discovery
 
Understanding UAE Labour Law: Key Points for Employers and Employees
Understanding UAE Labour Law: Key Points for Employers and EmployeesUnderstanding UAE Labour Law: Key Points for Employers and Employees
Understanding UAE Labour Law: Key Points for Employers and Employees
 
Stages of Startup Funding - An Explainer
Stages of Startup Funding - An ExplainerStages of Startup Funding - An Explainer
Stages of Startup Funding - An Explainer
 
Salesforce Loyalty Management A Comprehensive.pdf
Salesforce Loyalty Management A Comprehensive.pdfSalesforce Loyalty Management A Comprehensive.pdf
Salesforce Loyalty Management A Comprehensive.pdf
 
Raising Seed Capital by Steve Schlafman at RRE Ventures
Raising Seed Capital by Steve Schlafman at RRE VenturesRaising Seed Capital by Steve Schlafman at RRE Ventures
Raising Seed Capital by Steve Schlafman at RRE Ventures
 

862

  • 1. Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)
  • 2. 2 Overview What to ex pect What not to expect > Apache Jackrabbit > Source code > > JCR content modeling Live demo > > Best practices Business perspective > > Things to watch for Management perspective > Engineering perspective
  • 3. 3 Agenda > Apache Jackrabbit > Basic content modeling > References and search > Advanced features > Summary and questions
  • 4. 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) – announce- subscribe@jackrabbit.apache.org http:/ / jackrabbit.apache.org/ > Components – Core, API, RMI, WebDAV, webapp, JCA, …
  • 5. 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: Ex cellent support, but may delay you – Website: Some good parts, but not complete or very well structured – Wiki: End user ex perience (especially for JBoss) – FAQ: outdated – Issue tracker: Good response time
  • 6. 6 Agenda > Apache Jackrabbit > Basic content modeling > References and search > Advanced features > Summary and questions
  • 7. 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. > Ex tensibility and flex ibility
  • 8. 8 Starting point: Leverage the standard node types Type hierarchy Content hierarchy nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource
  • 9. 9 Bottom- up modeling: Content types my:album > nt:folder - artist (string) my:review > nt:file - release date (date) - author (string) - star rating (long) my:tune > nt:file - artist (string) - release date (date) my:resource > nt:resource - codec (string) - bitrate (long)
  • 10. 10 Top- down modeling: Content hierarchies Label Label Band Label Album Album Band Reviews Tune Tune Images Tune Reviews Images
  • 11. 11 Content Modeling: Words of advice > Namespaces – Use a single namespace per company or application – Use a reasonably unique namespace prefix – Prefix ed 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 complex ity – Jackrabbit performance > Content- driven design – Design your content before your application
  • 12. 12 Agenda > Apache Jackrabbit > Basic content modeling > References and search > Advanced features > Summary and questions
  • 13. 13 Alternative Views: References tags tunes playlists Tune Rock Classic Top 10 Picks link link link Tune
  • 14. 14 Alternative Views: Search Looking XPath SQL for Latest / jcr:root/ my:tunes/ / element(*,my:tu SELECT * FROM my:tune releases ne) WHERE [@released > xs:dateTime(‘…’)] jcr:path LIKE ‘/ my:tunes/ %’ AND released > DATE ‘…’ Reviews / jcr:root/ my:tunes/ / element(*,my:re SELECT * FROM my:review with view) WHERE keywords / jcr:content[jcr:contains(.,’…’)] jcr:path LIKE ‘/ my:tunes/ %’ AND CONTAINS(*,‘…’)
  • 15. 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 index ing 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. 16 Agenda > Apache Jackrabbit > Basic content modeling > References and search > Advanced features > Summary and questions
  • 17. 17 Staged Publishing: Versioning Version store Staging Live
  • 18. 18 Personalization tunes users Tune John Jane tunes favorites playlists Tune link link
  • 19. 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. 20 Agenda > Apache Jackrabbit > Basic content modeling > References and search > Advanced features > Summary and questions
  • 21. 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, ex port/ import, full tex t 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 jukka.zitting@day.com Apache Jackrabbit http:/ / jackrabbit.apache.org/ users@jackrabbit.apache.org Apache Software Foundation http:/ / www.apache.org/