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 Platformdrmarcustillett
 
Cloudcon East Presentation
Cloudcon East PresentationCloudcon East Presentation
Cloudcon East Presentationbr7tt
 
[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
 
Oozie HUG May12
Oozie HUG May12Oozie HUG May12
Oozie HUG May12mislam77
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Takeru INOUE
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deploymentzeeg
 
Academy PRO: Entity Framework Сore
Academy PRO: Entity Framework СoreAcademy PRO: Entity Framework Сore
Academy PRO: Entity Framework СoreBinary Studio
 
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 LaneHoward Greenberg
 
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 applicationsnick_garrod
 
Windows Azure platform
Windows Azure platformWindows Azure platform
Windows Azure platformGetDev.NET
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database DesignAndrei Solntsev
 
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 dataWSO2
 

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

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 PlatformNuxeo
 
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.lucenerevolution
 
Hippo get together presentation solr integration
Hippo get together presentation   solr integrationHippo get together presentation   solr integration
Hippo get together presentation solr integrationHippo
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)Carsten Ziegeler
 
Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic exportHippo
 
Web Applications Development
Web Applications DevelopmentWeb Applications Development
Web Applications Developmentriround
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingFelix Meschberger
 
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 Peter Broekroelofs
 
Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Hippo
 
JCR - Java Content Repositories
JCR - Java Content RepositoriesJCR - Java Content Repositories
JCR - Java Content RepositoriesCarsten Ziegeler
 
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 SlingBob 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 daemonsHippo
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit ArchitectureLars Trieloff
 
Hippo CMS Integration Patterns
Hippo CMS Integration PatternsHippo CMS Integration Patterns
Hippo CMS Integration PatternsJeroen Reijn
 

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

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 DevelopersBurr Sutter
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007lucclaes
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloJulian Arocena
 
J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch ProcessingChris Adkin
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBXESUG
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3Oracle
 
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 S313978David Chou
 
Building services using windows azure
Building services using windows azureBuilding services using windows azure
Building services using windows azureSuliman AlBattat
 
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 OSGiCédric Hüsler
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
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)Daniel Bryant
 
Gnizr Architecture (for developers)
Gnizr Architecture (for developers)Gnizr Architecture (for developers)
Gnizr Architecture (for developers)hchen1
 
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_kIBM
 
Rad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRad Extensibility - Srilakshmi S Rajesh K
Rad Extensibility - Srilakshmi S Rajesh KRoopa Nadkarni
 
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)Pavlo Baron
 
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...Cobus Bernard
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBJustin Smestad
 
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 StartupSachin Rekhi
 

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

Augmented Reality with Open Source Software
Augmented Reality with Open Source SoftwareAugmented Reality with Open Source Software
Augmented Reality with Open Source Softwarenobby
 
Apache Sling
Apache SlingApache Sling
Apache Slingnobby
 
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 Cocoonnobby
 
Lenya and Shibboleth
Lenya and ShibbolethLenya and Shibboleth
Lenya and Shibbolethnobby
 
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.0nobby
 
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.4nobby
 

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

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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 Nanonetsnaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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 MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

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