content management with apache jackrabbit

22
Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)

Upload: jlm

Post on 18-May-2015

4.641 views

Category:

Business


3 download

DESCRIPTION

Présentation de la gestion de contenu avec JackRabbit

TRANSCRIPT

Page 1: Content Management With Apache Jackrabbit

Content Management with Apache Jackrabbit

Jukka Zitting

Day Software

(862)

Page 2: Content Management With Apache Jackrabbit

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

Page 3: Content Management With Apache Jackrabbit

3

Agenda

> Apache Jackrabbit

> Basic content modeling

> References and search

> Advanced features

> Summary and questions

Page 4: Content Management With Apache Jackrabbit

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 protected]

> Components

– Core, API, RMI, WebDAV, webapp, JCA, … http://jackrabbit.apache.org/

Page 5: Content Management With Apache Jackrabbit

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

Page 6: Content Management With Apache Jackrabbit

6

Agenda

> Apache Jackrabbit

> Basic content modeling

> References and search

> Advanced features

> Summary and questions

Page 7: Content Management With Apache Jackrabbit

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

Page 8: Content Management With Apache Jackrabbit

8

Starting point: Leverage the standard node types

Type hierarchy Content hierarchy

nt:hierarchyNode

nt:folder

nt:file

nt:linkedFile

nt:resource

Page 9: Content Management With Apache Jackrabbit

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)

Page 10: Content Management With Apache Jackrabbit

10

Top-down modeling: Content hierarchies

Album

Images

Tune

Band

Label Label

Tune

Album

Reviews

Label

Band

Reviews TuneImages

Page 11: Content Management With Apache Jackrabbit

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

Page 12: Content Management With Apache Jackrabbit

12

Agenda

> Apache Jackrabbit

> Basic content modeling

> References and search

> Advanced features

> Summary and questions

Page 13: Content Management With Apache Jackrabbit

13

Alternative Views: References

Rock

tags tunes

Tune

Tune

Classic Top 10

playlists

Picks

linklinklink

Page 14: Content Management With Apache Jackrabbit

14

Alternative Views: Search

Looking for XPath SQL

Latest releases

/jcr:root/my:tunes//element(*,my:tune)

[@released > xs:dateTime(‘…’)]

SELECT * FROM my:tune

WHERE

jcr:path LIKE ‘/my:tunes/%’

AND released > DATE ‘…’

Reviews with keywords

/jcr:root/my:tunes//element(*,my:review)

/jcr:content[jcr:contains(.,’…’)]

SELECT * FROM my:review

WHERE

jcr:path LIKE ‘/my:tunes/%’

AND CONTAINS(*,‘…’)

Page 15: Content Management With Apache Jackrabbit

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?

Page 16: Content Management With Apache Jackrabbit

16

Agenda

> Apache Jackrabbit

> Basic content modeling

> References and search

> Advanced features

> Summary and questions

Page 17: Content Management With Apache Jackrabbit

17

Version store

LiveStaging

Staged Publishing: Versioning

Page 18: Content Management With Apache Jackrabbit

18

Personalization

tunes

Tune

Tune

John

users

Jane

playliststunes

link link

favorites

Page 19: Content Management With Apache Jackrabbit

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

Page 20: Content Management With Apache Jackrabbit

20

Agenda

> Apache Jackrabbit

> Basic content modeling

> References and search

> Advanced features

> Summary and questions

Page 21: Content Management With Apache Jackrabbit

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?

Page 22: Content Management With Apache Jackrabbit

Jukka Zitting http://www.day.com/

Day Software [email protected]

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

[email protected]

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