SlideShare a Scribd company logo
1 of 35
Download to read offline
The Java Content
   Repository
    Andreas Hartmann
   CTO, BeCompany GmbH
Agenda


Primer: Content- vs. behaviour-orientation

What is a content repository?

The Java Content Repository

Jackrabbit
Primer:
    Content- vs.
Behaviour-Orientation
Behaviour vs. Content
                       WWW
Applications

                       Simple
Complex

                       Standards-based
Proprietary

                       Build your own
Fix set of functions

                       Coarse-grained
Fine-grained

                       Integration: O(n)
Integration: O(n²)
Integration through Behaviour
Integration through Content
Server                        Applet



                              Desktop




          feed.getPosts()       Dojo
          feed.add(post)
  Posts   post.setTitle(…)
          post.setAuthor(…)
                               Flex
          feed.delete(…)
          …
Workflow Engine
Server                        Applet

               States
             setState()
                              Desktop
             getState()



          feed.getPosts()       Dojo
          feed.add(post)
  Posts   post.setTitle(…)
          post.setAuthor(…)
                               Flex
          feed.delete(…)
          …
Workflow Engine
Server                      Applet

              States

                            Desktop




                              Dojo

  Posts
               Console
                             Flex
Google
Server
                              Reader



                               Sage



                Atom
                               Dojo
             get(uri) : doc
 Documents
             post(uri, doc)
             put(uri, doc)
                               Flex
             delete(uri)
Workflow    Google
Server
              Engine     Reader



                          Sage



            Atom
                          Dojo

Documents
               Console
                          Flex
Content Orientation …

Enforces simplicity

Encourages standardization (think SOA)

Allows applications to involve independently
from each other

Improves scalability and reuse of
infrastructure
Content Orientation …

May be inappropriate for complex processes

Requires content processing facilities in
each involved application (good availability
for content formats based on open
standards)

Can increase network traffic
What is a
Content Repository?
Why a Repository Standard?

  Portability → no vendor lock-in

  Shared vocabulary for developers

  Reuse of experience, code, tools, …:
  True content repository infrastructure

  Increased independence, reduced risk
Customers

Now: „Vendor A had a nice GUI, but the
back-end doesn‘t scale. Vendor B had a great
back-end, but the front-end is unusable.“

With JCR: „We can choose the front-end
vendor independently from the back-end
vendor. And when we need a bigger back-
end, we can exchange it without having to
train the users again.“
Vendors

Now: „It‘s such a PITA to fix all those
concurrency bugs in the back-end. I‘d rather
work on this nifty AJAX stuff.“

With JCR: „Since we can just include
whatever back-end the customer wants, we
can concentrate on providing a magnificent
user experience by continuously improving
our front-end.“
What is a Content Repository?

   Application data „super store“

   Generic API for content storage:
   CRUD + locking, versioning, transactions,
   observation

   Access control

   Powerful search
API, not Product

Well-defined, closed set of features

Documentation about expected behaviour

Abstraction from implementation:
Choose whatever storage facility is
appropriate - file system, RDBMS, …
or even mix them in your repository
Today: Separated Content Silos

 WCMS         CRM      Project Mgmt




              Oracle      MySQL
File System
Towards a JCR Infrastructure

 WCMS                      CRM       Project Mgmt




                       JSR 170 API



              JCR
              Connectors



                           Oracle       MySQL
File System
JCR Infrastructure

WCMS      CRM            Project Mgmt




        JSR 170 API




        JCR Repository
Choosing a Back-End

How easily can I implement a connector?
Versioning: FS easy, RDMBS difficult
Transactions: FS difficult, RDMBS easy

Performance

Manageability
Repository Deployment
    Models (Jackrabbit)

A) Inside the application

B) As application inside the container
   Referenced via JNDI, accessed via JCR

C) As standalone server
   Communication via SOAP, DAV, RMI, …
   Accessed via JCR stub
Content Model Features


Structured: Mandatory/optional elements

Unstructured: Store what you like

Content types (textual, binary, …)

Relationships with integrity control
The Java Content
   Repository
 JSR-170 = JCR 1.0 (Final Release)
 JSR-283 = JCR 2.0 (Public Review)
Content Model

Repository

 Workspaces (shared version store)
 a) working copies for users
 b) authoring/staging/live
 c) …

   Tree of nodes

     Properties
Nodes

1 primary node type
e.g., nt:file, nt:unstructured

0..* mixin node types
e.g., mix:versionable, mix:referenceable

Properties (key-value pairs)
string, binary, date, double, long, boolean,
name, path, reference
Node Types

Hierarchical (inheritance)

Child node definitions:
Default+required node types for children
same name siblings allowed (true|false)

Property definitions:
Required type, multiple (true|false),
value constraints, default values
Level 1

Initiate a session with a workspace (login)

Retrieve and traverse nodes and properties

Read the values of properties

Export to XML

XPath queries
Level 2


Add and remove nodes and properties

Write the value of properties

Assign node types to nodes

Import from XML
Optional

Locking

Transactions (Java Transaction API)

Versioning (directed acyclic graph)

Observation

SQL queries
Implementations

Apache Jackrabbit (Reference Impl.)

Jeceira

eXo Platform

Alfresco

Day CRX (commercial)
Jackrabbit
Persistence managers (back-ends):
In-memory: fast, but not persistent
Serialized objects: good performance
XML: human-readable, good for testing
RDBMS: good performance, scalable

Hibernate pers. mgr. from JBoss project:
Clustering, transactions, better caching

Lucene for indexing
JSR-283: JCR 2.0

Management facilities for

 Access permissions
 Workspaces
 Node Types
 Meta data

I18n

More Related Content

What's hot

Developing For The Windows Azure Platform
Developing For The Windows Azure PlatformDeveloping For The Windows Azure Platform
Developing For The Windows Azure Platform
drmarcustillett
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)
Steve Min
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008
Takeru INOUE
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deployment
zeeg
 
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
Stephan H. Wissel
 
Scaling up wso2 bam for billions of requests and terabytes of data
Scaling up wso2 bam for billions of requests and terabytes of dataScaling up wso2 bam for billions of requests and terabytes of data
Scaling up wso2 bam for billions of requests and terabytes of data
WSO2
 

What's hot (19)

Developing For The Windows Azure Platform
Developing For The Windows Azure PlatformDeveloping For The Windows Azure Platform
Developing For The Windows Azure Platform
 
Cloudcon East Presentation
Cloudcon East PresentationCloudcon East Presentation
Cloudcon East Presentation
 
WildFly & WildFly Swarm
WildFly & WildFly SwarmWildFly & WildFly Swarm
WildFly & WildFly Swarm
 
Offline Html5 3days
Offline Html5 3daysOffline Html5 3days
Offline Html5 3days
 
[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)[SSA] 03.newsql database (2014.02.05)
[SSA] 03.newsql database (2014.02.05)
 
Oozie HUG May12
Oozie HUG May12Oozie HUG May12
Oozie HUG May12
 
High Performance Databases
High Performance DatabasesHigh Performance Databases
High Performance Databases
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deployment
 
Academy PRO: Entity Framework Сore
Academy PRO: Entity Framework СoreAcademy PRO: Entity Framework Сore
Academy PRO: Entity Framework Сore
 
Jdbc
JdbcJdbc
Jdbc
 
Connect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast LaneConnect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast Lane
 
SHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applicationsSHARE 2014, Pittsburgh CICS and Liberty applications
SHARE 2014, Pittsburgh CICS and Liberty applications
 
Windows Azure platform
Windows Azure platformWindows Azure platform
Windows Azure platform
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database Design
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
SHOW107: The DataSource Session: Take XPages data boldly where no XPages data...
 
Scaling up wso2 bam for billions of requests and terabytes of data
Scaling up wso2 bam for billions of requests and terabytes of dataScaling up wso2 bam for billions of requests and terabytes of data
Scaling up wso2 bam for billions of requests and terabytes of data
 
Windows Azure Storage – Architecture View
Windows Azure Storage – Architecture ViewWindows Azure Storage – Architecture View
Windows Azure Storage – Architecture View
 

Viewers also liked

Hippo get together presentation solr integration
Hippo get together presentation   solr integrationHippo get together presentation   solr integration
Hippo get together presentation solr integration
Hippo
 
Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
Hippo
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
Bob Paulin
 
Hippo gettogether april 2012 faceted navigation a tale of daemons
Hippo gettogether april 2012 faceted navigation   a tale of daemonsHippo gettogether april 2012 faceted navigation   a tale of daemons
Hippo gettogether april 2012 faceted navigation a tale of daemons
Hippo
 

Viewers also liked (20)

Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo
 
Cms integration of apache solr how we did it.
Cms integration of apache solr   how we did it.Cms integration of apache solr   how we did it.
Cms integration of apache solr how we did it.
 
Hippo get together presentation solr integration
Hippo get together presentation   solr integrationHippo get together presentation   solr integration
Hippo get together presentation solr integration
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
Hippo CMS at OpenCo Amsterdam 2014
Hippo CMS at OpenCo Amsterdam 2014Hippo CMS at OpenCo Amsterdam 2014
Hippo CMS at OpenCo Amsterdam 2014
 
Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
 
Web Applications Development
Web Applications DevelopmentWeb Applications Development
Web Applications Development
 
Hippo Presentation Jboye Study tour
Hippo Presentation Jboye Study tourHippo Presentation Jboye Study tour
Hippo Presentation Jboye Study tour
 
What's new in JSR-283?
What's new in JSR-283?What's new in JSR-283?
What's new in JSR-283?
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with Sling
 
App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS
 
JCR and ModeShape
JCR and ModeShapeJCR and ModeShape
JCR and ModeShape
 
Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content Repositories
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Hippo gettogether april 2012 faceted navigation a tale of daemons
Hippo gettogether april 2012 faceted navigation   a tale of daemonsHippo gettogether april 2012 faceted navigation   a tale of daemons
Hippo gettogether april 2012 faceted navigation a tale of daemons
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit Architecture
 
Hippo CMS Integration Patterns
Hippo CMS Integration PatternsHippo CMS Integration Patterns
Hippo CMS Integration Patterns
 
Hippo CMS - A first look
Hippo CMS - A first lookHippo CMS - A first look
Hippo CMS - A first look
 

Similar to The Java Content Repository

Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
lucclaes
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao Pablo
Julian Arocena
 
Building services using windows azure
Building services using windows azureBuilding services using windows azure
Building services using windows azure
Suliman AlBattat
 
3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k
IBM
 
Rad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh K
Roopa Nadkarni
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Justin Smestad
 

Similar to The Java Content Repository (20)

Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java Developers
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao Pablo
 
J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch Processing
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBX
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
 
Building services using windows azure
Building services using windows azureBuilding services using windows azure
Building services using windows azure
 
Building Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGiBuilding Content Applications with JCR and OSGi
Building Content Applications with JCR and OSGi
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
 
Gnizr Architecture (for developers)
Gnizr Architecture (for developers)Gnizr Architecture (for developers)
Gnizr Architecture (for developers)
 
Spring
SpringSpring
Spring
 
Deep dive into AWS fargate
Deep dive into AWS fargateDeep dive into AWS fargate
Deep dive into AWS fargate
 
3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k3 rad extensibility-srilakshmi_s_rajesh_k
3 rad extensibility-srilakshmi_s_rajesh_k
 
Rad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh K
 
Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)
Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)
Chef's Coffee - provisioning Java applications with Chef (@pavlobaron)
 
AWS Webinar 23 - Getting Started with AWS - Understanding total cost of owner...
AWS Webinar 23 - Getting Started with AWS - Understanding total cost of owner...AWS Webinar 23 - Getting Started with AWS - Understanding total cost of owner...
AWS Webinar 23 - Getting Started with AWS - Understanding total cost of owner...
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
A Day in the Life of a Silicon Valley Startup
A Day in the Life of a Silicon Valley StartupA Day in the Life of a Silicon Valley Startup
A Day in the Life of a Silicon Valley Startup
 

More from nobby (6)

Augmented Reality with Open Source Software
Augmented Reality with Open Source SoftwareAugmented Reality with Open Source Software
Augmented Reality with Open Source Software
 
Apache Sling
Apache SlingApache Sling
Apache Sling
 
OSCOM 4: Managing Beautiful Websites with Cocoon
OSCOM 4: Managing Beautiful Websites with CocoonOSCOM 4: Managing Beautiful Websites with Cocoon
OSCOM 4: Managing Beautiful Websites with Cocoon
 
Lenya and Shibboleth
Lenya and ShibbolethLenya and Shibboleth
Lenya and Shibboleth
 
Creating a Resource Type with Apache Lenya 2.0
Creating a Resource Type with Apache Lenya 2.0Creating a Resource Type with Apache Lenya 2.0
Creating a Resource Type with Apache Lenya 2.0
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

The Java Content Repository

  • 1. The Java Content Repository Andreas Hartmann CTO, BeCompany GmbH
  • 2. Agenda Primer: Content- vs. behaviour-orientation What is a content repository? The Java Content Repository Jackrabbit
  • 3. Primer: Content- vs. Behaviour-Orientation
  • 4. Behaviour vs. Content WWW Applications Simple Complex Standards-based Proprietary Build your own Fix set of functions Coarse-grained Fine-grained Integration: O(n) Integration: O(n²)
  • 7. Server Applet Desktop feed.getPosts() Dojo feed.add(post) Posts post.setTitle(…) post.setAuthor(…) Flex feed.delete(…) …
  • 8. Workflow Engine Server Applet States setState() Desktop getState() feed.getPosts() Dojo feed.add(post) Posts post.setTitle(…) post.setAuthor(…) Flex feed.delete(…) …
  • 9. Workflow Engine Server Applet States Desktop Dojo Posts Console Flex
  • 10. Google Server Reader Sage Atom Dojo get(uri) : doc Documents post(uri, doc) put(uri, doc) Flex delete(uri)
  • 11. Workflow Google Server Engine Reader Sage Atom Dojo Documents Console Flex
  • 12. Content Orientation … Enforces simplicity Encourages standardization (think SOA) Allows applications to involve independently from each other Improves scalability and reuse of infrastructure
  • 13. Content Orientation … May be inappropriate for complex processes Requires content processing facilities in each involved application (good availability for content formats based on open standards) Can increase network traffic
  • 14. What is a Content Repository?
  • 15. Why a Repository Standard? Portability → no vendor lock-in Shared vocabulary for developers Reuse of experience, code, tools, …: True content repository infrastructure Increased independence, reduced risk
  • 16. Customers Now: „Vendor A had a nice GUI, but the back-end doesn‘t scale. Vendor B had a great back-end, but the front-end is unusable.“ With JCR: „We can choose the front-end vendor independently from the back-end vendor. And when we need a bigger back- end, we can exchange it without having to train the users again.“
  • 17. Vendors Now: „It‘s such a PITA to fix all those concurrency bugs in the back-end. I‘d rather work on this nifty AJAX stuff.“ With JCR: „Since we can just include whatever back-end the customer wants, we can concentrate on providing a magnificent user experience by continuously improving our front-end.“
  • 18. What is a Content Repository? Application data „super store“ Generic API for content storage: CRUD + locking, versioning, transactions, observation Access control Powerful search
  • 19. API, not Product Well-defined, closed set of features Documentation about expected behaviour Abstraction from implementation: Choose whatever storage facility is appropriate - file system, RDBMS, … or even mix them in your repository
  • 20. Today: Separated Content Silos WCMS CRM Project Mgmt Oracle MySQL File System
  • 21. Towards a JCR Infrastructure WCMS CRM Project Mgmt JSR 170 API JCR Connectors Oracle MySQL File System
  • 22. JCR Infrastructure WCMS CRM Project Mgmt JSR 170 API JCR Repository
  • 23. Choosing a Back-End How easily can I implement a connector? Versioning: FS easy, RDMBS difficult Transactions: FS difficult, RDMBS easy Performance Manageability
  • 24. Repository Deployment Models (Jackrabbit) A) Inside the application B) As application inside the container Referenced via JNDI, accessed via JCR C) As standalone server Communication via SOAP, DAV, RMI, … Accessed via JCR stub
  • 25. Content Model Features Structured: Mandatory/optional elements Unstructured: Store what you like Content types (textual, binary, …) Relationships with integrity control
  • 26. The Java Content Repository JSR-170 = JCR 1.0 (Final Release) JSR-283 = JCR 2.0 (Public Review)
  • 27. Content Model Repository Workspaces (shared version store) a) working copies for users b) authoring/staging/live c) … Tree of nodes Properties
  • 28. Nodes 1 primary node type e.g., nt:file, nt:unstructured 0..* mixin node types e.g., mix:versionable, mix:referenceable Properties (key-value pairs) string, binary, date, double, long, boolean, name, path, reference
  • 29. Node Types Hierarchical (inheritance) Child node definitions: Default+required node types for children same name siblings allowed (true|false) Property definitions: Required type, multiple (true|false), value constraints, default values
  • 30. Level 1 Initiate a session with a workspace (login) Retrieve and traverse nodes and properties Read the values of properties Export to XML XPath queries
  • 31. Level 2 Add and remove nodes and properties Write the value of properties Assign node types to nodes Import from XML
  • 32. Optional Locking Transactions (Java Transaction API) Versioning (directed acyclic graph) Observation SQL queries
  • 33. Implementations Apache Jackrabbit (Reference Impl.) Jeceira eXo Platform Alfresco Day CRX (commercial)
  • 34. Jackrabbit Persistence managers (back-ends): In-memory: fast, but not persistent Serialized objects: good performance XML: human-readable, good for testing RDBMS: good performance, scalable Hibernate pers. mgr. from JBoss project: Clustering, transactions, better caching Lucene for indexing
  • 35. JSR-283: JCR 2.0 Management facilities for Access permissions Workspaces Node Types Meta data I18n