JCR and ModeShape
Upcoming SlideShare
Loading in...5

JCR and ModeShape



Content Repository for Java API, ModeShape project, and jboss.org - talk from Red Hat Developer Conference 2011 (Brno, Czech republic)

Content Repository for Java API, ModeShape project, and jboss.org - talk from Red Hat Developer Conference 2011 (Brno, Czech republic)



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • DB: structure, integrity, query FS: stream, locking, access control, hierarchy New: unstructured, versioning, search, events Typical use: ... test management systems
  • In a writable repository a node's primary type is first assigned upon node creation, while mixin types may be assigned on creation or during a node's lifetime. Repository implementations may vary as to how flexible they are in allowing changes to the primary or mixin node types assigned to a node. . Primary type ~= Class, Mixin Type ~= Interface . nt:base, jcr:primaryType, . nt:hierarchyNode => nt:file, nt:folder, nt:resource, nt:address, ... . mix:referenceable, mix:created, mix:mimeType, mix:language .
  • Xpath and JCR-SQL deprecated in JCR 2.0 . Nodes appear as rows in those tables that correspond to the node’s types - a node can appear as a row in multiple tables - often a complete picture of a node requires joining multiple tables - other joins are possible, such as ancestors, descendants, equivalent properties . JQOM = Java Query Object Model (mapping of AQM to Java API) javax.jcr.query.qom.* .
  • Search & Query: most implementations automatically indexes the content (Jackrabbit and ModeShape use Lucene)
  • eXo-JCR has been donated to the JBoss Community by eXo Platform
  • JDBC via JPA/Hibernate . Infinispan – data grid platform (CLOUD!!!) . E.g. transient or filesystem for light-weight apps (or development), Database (JPA) for production
  • Connectors: other JCR,
  • Mapping (projection) of R1:W1 -> F:Wa, F1:W2 -> F:Wb, R2:W1 -> F:Wc, ...
  • ZIP (JAR, WAR, EAR): nt:file + nt:folder Java source/class: nt:unstructured for package – class name, annotations, constructors, methods, fields – class:* namespace MS Office: structure via POI library Image: jcr:mimeType, jcr:encoding, image:formatName, image:width, image:height, image:bitsPerPixel, image:progressive, image:numberOfImages, image:physicalWidthDpi, image:physicalHeightDpi, image:physicalWidthInches, image:physicalHeightInches Not sure about EXIF data TEIID sequencers (Teiid = data virtualization) Text sequencers (delimiter, fixed width)
  • RESTful service: JSON responses (HTML, XML planned), uses RESTEasy . WebDAV: mount repository as network share . JDBC driver – it has many limitations, not full JDBC – workspace in URL is optional, driver connects to the default workspace if missing . JOPR/RHQ – managment tool .
  • Imagine the situation: You have to develop search solution for your company data – partially in SQL databases, partially in SAP, some data on filesystem (MS Office docs), ... Then you can develop all parsers, connectors etc. on your own – or you will use JCR API in your “search engine” and ModeShape with its connectors, sequencers and federationm for accessing the data.
  • They fleed to GitHub but the rest of the infrastructure is on jboss.org
  • 4.2.2 is considered experimental . Performance issues, to be solved in ModeShape 2.5 .
  • In SOA-Platform 5.1 to be released in few days . In BRMS 5.1.1 or 5.2 (5.1 to be released as ^^^) .

JCR and ModeShape JCR and ModeShape Presentation Transcript

  • Content Repository API for Java ™ (JCR) & ModeShape Jozef Chocholáček @jchochol JBoss Community Team
  • Agenda
    • JCR – what is it (good for)
    • ModeShape – beyond JCR
    • How do we use JCR and ModeShape
  • JCR Content Repository API for Java ™
    • Simple answer: JSR-170, JSR-283 -> javax.jcr API
    • OK, few more details:
      • Abstracts where and how the content is stored
      • Best things from databases and file systems + additional features
    • Typical uses: CMS, portals, knowledge bases, artifact repositories, ...
  • JCR Basic Concepts
    • Repository
    • Workspace
    • Node
    • Property
    • Node Type
    • Path / UUID
    • Session
    • Namespace registry
    • Node type manager
    • Version manager
    • Lock manager
    • ...
  • JCR API Example
  • JCR Node Types
    • Defines the structure of the node
    • Supertype(s)
    • Primary node type / mixin node type
    • Property names and types
    • Child nodes and their (node) types
  • JCR Node Type Example
  • JCR Query Languages
    • XPath
    • JCR-SQL
    • JCR-SQL2
    • JCR-JQOM
    SQL JCR-SQL2 table node type column property row node
  • JCR JCR-SQL2 Examples
  • JCR JCR-JQOM Example
  • JCR Advantages (Why To Use JCR)
    • Standard API
    • Flexible data structure
    • Hierarchical graph-based storage
    • Search & query
    • Versioning
    • Access control
    • Referential integrity, locking, events, ...
  • JCR Implementations
    • Jackrabbit (Apache)
    • CRX (Day Software / Adobe)
    • ModeShape
    • Alfresco
    • eXo Platform (donated to the Jboss Community)
    • Oracle Beehive
  • ModeShape
    • JCR 2.0 implementation (all required & most of the optional features)
    • Own Graph API
    • Sequencers
    • Connectors (storage/access)
    • Federation
    • RESTful API
    • Clustering
    • ...
  • ModeShape Storage Options
    • Multiple out-of-the-box connectors
    • Easy to write your own connector
  • ModeShape Connectors
    • Use JCR API to access data from other systems (but leave the data where it is)
    • E.g. filesystem, Subversion, JBDC metadata, ...
  • ModeShape Federation
    • Virtual repository with projected workspaces from real repositories
    • Use the best data store for each kind of data
    • Combination of own and external data
    • Consistent use of JCR API
  • ModeShape Sequencers
    • Extract meaningful data from various file formats
    • Many out-of-the-box:
      • ZIP, JAR, EAR, WAR files
      • Java class and source files
      • DDL files
      • XML files
      • Microsoft Office documents
      • Image metadata (JPEG, GIF, BMP, PCX, PNG, IFF, ...)
      • MP3
      • and more
    • Easy to implement custom sequencers
  • ModeShape Extended JCR-SQL2
    • ModeShape supports complete JCR-SQL2 language as defined in specification, plus:
      • Additional joins ( FULL OUTER, CROSS )
      • Subqueries in criteria
      • LIMIT and OFFSET
      • DEPTH and PATH criteria
      • REFERENCE criteria
      • IN and NOT IN
      • Arithmetic expressions in criteria
  • ModeShape Other Features
    • RESTful service
    • WebDAV service
    • JDBC driver
      • Connects to one workspace
      • jdbc:jcr:http://{hostname}:{port}/modeshape-rest/?repositoryName={name}&user=...
    • JOPR RHQ plugin
    • Eclipse plugin (JBoss Tools)
  • ModeShape Why Use ModeShape?
    • Use the data you already have
    • Leave the data where it is
    • Sequencers (automatized extraction of content)
    • Federation
    • Standard JCR API – and beyond
    • Light-weight, embeddable, clusterable
    • Fast development process
    • Backed up by a big open-source company
  • jboss.org JCR, ModeShape and jboss.org
    • http://www.jboss.org/modeshape
    • Old name was JBoss DNA
    • Work in progress on empowering JBoss Community services with the strength of ModeShape
      • downloads.jboss.org
      • docs.jboss.org
      • search.jboss.org
    • Use in other JBoss projects/products
  • jboss.org Magnolia CMS & ModeShape
    • JCR based open-source (Java) CMS
    • By default on Apache Jackrabbit
    • Modular
    • From v.4.2.2 supports ModeShape
    • Goal: “Native” support for downloads.jboss.org
  • jboss.org ModeShape & JBoss Projects
    • Teiid
    • Drools
    • SOA Platform
    • BRMS
    • ...
  • Summary
    • JCR API is standard, simple and easy-to-use
    • ModeShape is JCR implementation, and adds important extensions
    • jboss.org eats its own dogfood ;-)
  • Links
    • http://www.jboss.org/modeshape
    • http://www.jcp.org/en/jsr/detail?id=283
    • http://www.magnolia-cms.com/
    • Freenode IRC: #modeshape
    • Twitter:
    @modeshape @magnolia_cms @jbossorg @jchochol
  • Questions ?
  • Thank You!
  • D2 D3 A107 9:00-9:45 Perl packaging for developers – Marcela Mašláňová MythTV - User view – Lukáš Doktor 9:50-10:35 Java packaging for developers – Stanislav Ochotnicky Gnome 3.0 (r)evolution - Tomáš Bžatek 10:40-11:25 JCR + ModeShape - Jozef Chocholáček Plasma Workspaces 4 by KDE – Lukáš Tinkl, Jaroslav Řezník Power management – Jaroslav Škarvada, Jan Včelák 11:30-12:30 Lunch Lunch Lunch 12:30-13:15 Planning and Scheduling with Drools - Lukáš Petrovický Spice - Jonathan Blandford Introduction to Qt development – Jaroslav Řezník 13:20-14:05 Teiid - data virtualization system - Boris Belovic Beyond init: systemd - Lennart Poettering Remote Desktop – Adam Tkáč 14:10-14:55 PicketLink and PicketBox - Peter Škopek Discussion: Bootloader and Dracut Future Plans - Harald Hoyer (session ends 10 minutes sooner) Bug hunting & static analysis – Ondřej Vašík and Petr Muller 15:00-15:45 Web Services for Remote Portlets - Michal Vančo System vs. Session – David Zeuthen 15:50-16:35 Infinispan : The future of open source data grids – Radoslav Husár, Michal Linhard SysVinit, upstart and systemd in Fedora and RHEL – Petr Lautrbach 16:40-17:25 Deltacloud API – Michal Fojtik Modern Linux Desktop alphabet – Tomáš Bžatek, Jaroslav Řezník