Content Repository API for Java ™  (JCR) & ModeShape Jozef Chocholáček @jchochol JBoss Community Team
Agenda <ul><li>JCR – what is it (good for)
ModeShape – beyond JCR
How do we use JCR and ModeShape </li></ul>
JCR Content Repository API  for Java ™   <ul><li>Simple answer:  JSR-170, JSR-283  ->  javax.jcr API
OK, few more details: </li><ul><li>Abstracts where and how the content is stored
Best things from databases and file systems  + additional features </li></ul><li>Typical uses: CMS, portals, knowledge bas...
JCR Basic Concepts <ul><li>Repository
Workspace
Node
Property
Node Type
Path / UUID
Session
Namespace registry
Node type manager
Version manager
Lock manager
... </li></ul>
JCR API Example
JCR Node Types <ul><li>Defines the structure of the node
Supertype(s)
Primary node type / mixin node type
Property names and types </li><ul><li>STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, REFERENCE, WE...
JCR Node Type Example
JCR Query Languages <ul><li>XPath
JCR-SQL
JCR-SQL2 </li></ul><ul><li>JCR-JQOM </li></ul>SQL JCR-SQL2 table node type column property row node
JCR JCR-SQL2 Examples
Upcoming SlideShare
Loading in...5
×

JCR and ModeShape

5,008

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,008
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
99
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 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&apos;s primary type is first assigned upon node creation, while mixin types may be assigned on creation or during a node&apos;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 =&gt; 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 &amp; 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 -&gt; F:Wa, F1:W2 -&gt; F:Wb, R2:W1 -&gt; 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

    1. 1. Content Repository API for Java ™ (JCR) & ModeShape Jozef Chocholáček @jchochol JBoss Community Team
    2. 2. Agenda <ul><li>JCR – what is it (good for)
    3. 3. ModeShape – beyond JCR
    4. 4. How do we use JCR and ModeShape </li></ul>
    5. 5. JCR Content Repository API for Java ™ <ul><li>Simple answer: JSR-170, JSR-283 -> javax.jcr API
    6. 6. OK, few more details: </li><ul><li>Abstracts where and how the content is stored
    7. 7. Best things from databases and file systems + additional features </li></ul><li>Typical uses: CMS, portals, knowledge bases, artifact repositories, ... </li></ul>
    8. 8. JCR Basic Concepts <ul><li>Repository
    9. 9. Workspace
    10. 10. Node
    11. 11. Property
    12. 12. Node Type
    13. 13. Path / UUID
    14. 14. Session
    15. 15. Namespace registry
    16. 16. Node type manager
    17. 17. Version manager
    18. 18. Lock manager
    19. 19. ... </li></ul>
    20. 20. JCR API Example
    21. 21. JCR Node Types <ul><li>Defines the structure of the node
    22. 22. Supertype(s)
    23. 23. Primary node type / mixin node type
    24. 24. Property names and types </li><ul><li>STRING, URI, BOOLEAN, LONG, DOUBLE, DECIMAL, BINARY, DATE, NAME, PATH, REFERENCE, WEAKREFERENCE </li></ul><li>Child nodes and their (node) types </li></ul>
    25. 25. JCR Node Type Example
    26. 26. JCR Query Languages <ul><li>XPath
    27. 27. JCR-SQL
    28. 28. JCR-SQL2 </li></ul><ul><li>JCR-JQOM </li></ul>SQL JCR-SQL2 table node type column property row node
    29. 29. JCR JCR-SQL2 Examples
    30. 30. JCR JCR-JQOM Example
    31. 31. JCR Advantages (Why To Use JCR) <ul><li>Standard API
    32. 32. Flexible data structure
    33. 33. Hierarchical graph-based storage
    34. 34. Search & query
    35. 35. Versioning
    36. 36. Access control
    37. 37. Referential integrity, locking, events, ... </li></ul>
    38. 38. JCR Implementations <ul><li>Jackrabbit (Apache)
    39. 39. CRX (Day Software / Adobe)
    40. 40. ModeShape </li></ul><ul><li>Alfresco
    41. 41. eXo Platform (donated to the Jboss Community)
    42. 42. Oracle Beehive </li></ul>
    43. 43. ModeShape <ul><li>JCR 2.0 implementation (all required & most of the optional features)
    44. 44. Own Graph API
    45. 45. Sequencers
    46. 46. Connectors (storage/access)
    47. 47. Federation
    48. 48. RESTful API
    49. 49. Clustering
    50. 50. ... </li></ul>
    51. 51. ModeShape Storage Options <ul><li>Multiple out-of-the-box connectors
    52. 52. Easy to write your own connector </li></ul>
    53. 53. ModeShape Connectors <ul><li>Use JCR API to access data from other systems (but leave the data where it is)
    54. 54. E.g. filesystem, Subversion, JBDC metadata, ... </li></ul>
    55. 55. ModeShape Federation <ul><li>Virtual repository with projected workspaces from real repositories
    56. 56. Use the best data store for each kind of data
    57. 57. Combination of own and external data
    58. 58. Consistent use of JCR API </li></ul>
    59. 59. ModeShape Sequencers <ul><li>Extract meaningful data from various file formats
    60. 60. Many out-of-the-box: </li><ul><li>ZIP, JAR, EAR, WAR files
    61. 61. Java class and source files
    62. 62. DDL files
    63. 63. XML files
    64. 64. Microsoft Office documents
    65. 65. Image metadata (JPEG, GIF, BMP, PCX, PNG, IFF, ...)
    66. 66. MP3
    67. 67. and more </li></ul><li>Easy to implement custom sequencers </li></ul>
    68. 68. ModeShape Extended JCR-SQL2 <ul><li>ModeShape supports complete JCR-SQL2 language as defined in specification, plus: </li><ul><li>Additional joins ( FULL OUTER, CROSS )
    69. 69. Subqueries in criteria
    70. 70. SELECT [DISTINCT]
    71. 71. UNION/INTERSECT/EXCEPT [ALL]
    72. 72. LIMIT and OFFSET
    73. 73. DEPTH and PATH criteria
    74. 74. REFERENCE criteria
    75. 75. IN and NOT IN
    76. 76. BETWEEN val1 [EXCLUSIVE] AND val2 [EXCLUSIVE]
    77. 77. Arithmetic expressions in criteria </li></ul></ul>
    78. 78. ModeShape Other Features <ul><li>RESTful service
    79. 79. WebDAV service
    80. 80. JDBC driver </li><ul><li>Connects to one workspace
    81. 81. jdbc:jcr:http://{hostname}:{port}/modeshape-rest/?repositoryName={name}&user=... </li></ul><li>JOPR RHQ plugin
    82. 82. Eclipse plugin (JBoss Tools) </li></ul>
    83. 83. ModeShape Why Use ModeShape? <ul><li>Use the data you already have
    84. 84. Leave the data where it is
    85. 85. Sequencers (automatized extraction of content)
    86. 86. Federation
    87. 87. Standard JCR API – and beyond
    88. 88. Light-weight, embeddable, clusterable
    89. 89. Fast development process
    90. 90. Backed up by a big open-source company </li></ul>
    91. 91. jboss.org JCR, ModeShape and jboss.org <ul><li>http://www.jboss.org/modeshape
    92. 92. Old name was JBoss DNA
    93. 93. Work in progress on empowering JBoss Community services with the strength of ModeShape </li><ul><li>downloads.jboss.org
    94. 94. docs.jboss.org
    95. 95. search.jboss.org </li></ul><li>Use in other JBoss projects/products </li></ul>
    96. 96. jboss.org Magnolia CMS & ModeShape <ul><li>JCR based open-source (Java) CMS
    97. 97. By default on Apache Jackrabbit
    98. 98. Modular
    99. 99. From v.4.2.2 supports ModeShape
    100. 100. Goal: “Native” support for downloads.jboss.org </li></ul>
    101. 101. jboss.org ModeShape & JBoss Projects <ul><li>Teiid
    102. 102. Drools
    103. 103. SOA Platform
    104. 104. BRMS
    105. 105. ... </li></ul>
    106. 106. Summary <ul><li>JCR API is standard, simple and easy-to-use
    107. 107. ModeShape is JCR implementation, and adds important extensions
    108. 108. jboss.org eats its own dogfood ;-) </li></ul>
    109. 109. Links <ul><li>http://www.jboss.org/modeshape
    110. 110. http://www.jcp.org/en/jsr/detail?id=283
    111. 111. http://www.magnolia-cms.com/
    112. 112. Freenode IRC: #modeshape
    113. 113. Twitter: </li></ul>@modeshape @magnolia_cms @jbossorg @jchochol
    114. 115. Questions ?
    115. 116. Thank You!
    116. 117. 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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×