Your SlideShare is downloading. ×
0
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
JSR 170: The Key to Unlocking Content Repositories
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JSR 170: The Key to Unlocking Content Repositories

2,311

Published on

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

No Downloads
Views
Total Views
2,311
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JSR 170: The Key to Unlocking Content Repositories Originally presented at the XML 2006 Conference by: Joel Amoussou, CEO, Efasoft [email_address]
  • 2. JSR 170 Design Goal “ The API should be a standard, implementation independent, way to access content bi-directionally on a granular level within a content repository.” http://www.jcp.org/en/jsr/detail?id=170
  • 3. The JDBC of Content Repositories RDBMS Content Repositories Analogy Infrastructure & Consolidation Relational SQL JDBC Hierarchical XPath 2.0 JSR 170
  • 4. The Airline Industry Use Case Airline Tech Pubs Portal Airframe Manufacturer RDBMS Engine Manufacturer Native XML DB Component Manufacturer File System JSR 170 JSR 170 JSR 170 JSR 170
  • 5. The Airline Industry Use Case (cont’d)‏ Airline Tech Pubs Portal Airframe Manufacturer RDBMS Engine Manufacturer Native XML DB Component Manufacturer Object DB JSR 170 JSR 170 JSR 170 JSR 170 NEW No rewrite!
  • 6. Enterprise Repository Product Lifecycle Management (PLM)‏ My Customers Content Repositories Learning Management System (LMS)‏ Enterprise Resource Planning (ERP)‏ Enterprise Portals Customer Relationship Management (CRM)‏ MyRepo
  • 7. Interoperable Enterprise CMS Cross-Repository Integration Library Services Observation Exchange Aggre- gation
  • 8. Features WebDAV, RMI, SOAP Open Source Jackrabbit/TCK/Eclipse Hierarchical model (workspace, nodes, and properties)‏ Plug-and-Play Compliant Repository Independent of Persistence Storage Standardized Content Repository API JSR 170
  • 9. Repository Model Description DescriptiveDataModule <dm> … </dm> Illustration Root Procedure Node Property Content Date Content <dm> … </dm> Content 2006-12-06 Creator “ X-Airways” ProceduralDataModule
  • 10. JSR 170 Code Snippet <ul><li>InitialContext ctx = ... </li></ul><ul><li>Repository repository = (Repository)ctx.lookup(&quot;s1000drepo&quot;); </li></ul><ul><li>Credentials credentials = new SimpleCredentials(&quot;username&quot;, &quot;password&quot;.toCharArray()); </li></ul><ul><li>Session mySession = repository.login(credentials, &quot;S1000DWorkspace&quot;); </li></ul><ul><li>Node root = mySession.getRootNode(); </li></ul><ul><li>Node illustration = root.getNode(&quot;Description/Illustration&quot;); </li></ul><ul><li>Property dateProperty = illustration.getProperty(&quot;Date&quot;); </li></ul><ul><li>Value dateValue = dateProperty.getValue(); </li></ul><ul><li>date creationDate = dateValue.getDate(); </li></ul><ul><li>Node procedure = (Node) mySession.getItem(&quot;/Procedure&quot;); </li></ul><ul><li>Node proceduralDM = procedure.addNode(&quot;ProceduralDataModule&quot;); </li></ul><ul><li>proceduralDM.setProperty(&quot;Creator&quot;, &quot;X-Airways&quot;); </li></ul><ul><li>mySession.save(); </li></ul>
  • 11. JSR 170 Level 1 Credit: Apache Jackrabbit Level1 Read only Simple & Covers a large number of usecases Structured Strong typed information Hierarchical Parent child relationships, Sort order PropertyTypes String, Binary, Numbers, Calendar, ... NodeTypes Introspect complex Content Structures Query (XPath)‏ Search and query the Repository Export Standardized XML Content Export Fine & Coarsegrained Content Items Small to Large
  • 12. JSR 170 Level 2 Credit: Apache Jackrabbit Write Save changes to a repository Unstructured Support for weakly or unstructured Content Import Standardized Finegrained Content Import Referencial Integrity Reference Tracking and Integrity AccessControl Introspection Level 2
  • 13. Optional Features Credit: Apache Jackrabbit Versioning Workspaces, Merge, Update, Label, ... JTA Support (XA) Transactions Observation Monitor changes in the Repository Query (SQL)‏ Search the Content Repeository using SQL Locking Session based and persistant
  • 14. Apache Sling and Chemistry <ul><li>Sling </li></ul><ul><li>REST access to Jackrabbit </li></ul><ul><li>Server-side Javascript </li></ul><ul><li>OSGi </li></ul><ul><li>Chemistry </li></ul><ul><li>CMIS on top of Jackrabbit </li></ul><ul><li>SOAP binding </li></ul><ul><li>AtomPub binding </li></ul>
  • 15. JSR 283 1 <ul><li>Node & Property </li></ul><ul><li>Shareable nodes </li></ul><ul><li>Content modeling </li></ul><ul><li>Metadata </li></ul>2 <ul><li>Misc </li></ul><ul><li>Retention & hold </li></ul><ul><li>Access control </li></ul><ul><li>Journaled observ. </li></ul><ul><li>Workspace mgt </li></ul>3 <ul><li>Query </li></ul><ul><li>Extension for SQL </li></ul><ul><li>Prepared queries </li></ul>
  • 16. Thank You ! [email_address]

×