Developing with the JCR (JSR 170, JSR 283) Lennard Fuller JA-SIG Spring, 2008 © Copyright Unicon, Inc., 2006. This work is the intellectual property of.

Slides:



Advertisements
Similar presentations
Grid Content Management Jim Myers PNNL. GFS-WG Aims to –describe and manage the namespace of federated data sets, access control mechanisms, and meta-
Advertisements

Web Service Architecture
While You Were Out: How Students are Transforming Information and What it Means for Publishing Kate Wittenberg The Electronic Publishing Initiative at.
Web Services Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
Web Application Management Moving Beyond CMS Douglas Clark Director, Web Applications Copyright Douglas Clark 2003 This work is the intellectual property.
Copyright Tom Parker, Ron DiNapoli, Andrea Beesing, Joy Veronneau This work is the intellectual property of the authors. Permission is granted for.
Design & Development Scott Battaglia Application Developer Enterprise Systems and Services Rutgers, the State University of New Jersey
Spring, Hibernate and Web Services 13 th September 2014.
XML Import & Export for uP 2 Using Cernunnos Andrew Petro & Drew Wills April 2007 uPortal Dev Meeting Johns Hopkins University © Copyright Unicon, Inc.,
February 2006 copyright Michael Welch, Blinn College This work is the intellectual property of the author. Permission is granted for this material to be.
STORY TITLE 1 Lotus Domino IBM JCR Included Content Stores IBM FileNet* IBM CM* Other* Integration & Coexistence Connectors enable direct access from user’s.
© 2003 IMS Global Learning Consortium, Inc. All Rights Reserved. Edward Walker IMS Global Learning Consortium Copyright Edward Walker,
Office of the Vice President Copyright Notice Copyright Greg Hedrick, Matthew Wirges This work is the intellectual property of the author. Permission.
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
Notes to the presenter. I would like to thank Jim Waldo, Jon Bostrom, and Dennis Govoni. They helped me put this presentation together for the field.
Migrating to uPortal 2 at UBC Paul Zablosky University of British Columbia Copyright Paul Zablosky This work is the intellectual property of the.
Method: systematically gather citations by KU faculty and approach those faculty for permission to deposit on their behalf articles published in journals.
JA-SIG CAS Enterprise Single Sign-On Scott Battaglia Application Developer Enterprise Systems & Services Rutgers, the State University of New Jersey Copyright.
Moving Out of The Shadows: Shining a Light on Data David Rotman Director of Computer Services Mark Mazelin Web Development Coordinator Copyright David.
Moving Your Paperwork Online Western Washington University E-Sign Web Forms Copyright Western Washington University, This work is the intellectual.
Reengineering Web Application Design - Customers In Charge Copyright Ruth Butlin This work is the intellectual property of the author. Permission.
Authenticating REST/Mobile clients using LDAP and OERealm
Rice’s 3-in-1 Wiki February 22, 2008 Copyright Carlyn Foshee Chatfield, This work is the intellectual property of the author. Permission is granted.
Sharing MU's SharePoint Experience 2005 Midwest Regional Conference Innovative Use of Technology: Getting IT Done Wednesday, March 23, 2005.
Sharing Information and Controlling Content: Continuing Challenges for Higher Education Susanna Frederick Fischer Assistant Professor Columbus School of.
Content Management with Apache Jackrabbit Jukka Zitting Day Software (862)
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”
Interoperability with CMIS and Apache Chemistry
Eric Westfall – Indiana University James Bennett – Indiana University ADMINISTERING A PRODUCTION KUALI RICE INFRASTRUCTURE.
Conditions and Terms of Use
The way Archiving should be!.  Many organisations have either no archiving policy or is severely fragmented.  Archiving is considered as just another.
© 2012 Autodesk Implementing Cloud-Based Productivity Solutions with the AutoCAD® ObjectARX® API Ravi Krishnaswamy Senior Software Architect.
An Introduction. ‣ What we are announcing ‣ Why is this important to customers? (I.e. the business case) ‣ The current standards landscape ‣ What is CMIS?
Cloud Use Cases, Required Standards, and Roadmaps Excerpts From Cloud Computing Use Cases White Paper
Lightning Talks Drew Wills JA-SIG Unconference, October 6-8, 2008 © Copyright Unicon, Inc., This work is the intellectual property of Unicon, Inc.
Date : 3/3/2010 Web Technology Solutions Class: Application Syndication: Parse and Publish RSS & XML Data.
UPortal Import/Export Drew Wills JA-SIG Winter Unconference, November 12, 2007 © Copyright Unicon, Inc., This work is the intellectual property of.
Content Storage with Apache Jackrabbit , Jukka Zitting.
Crystal And Elliott Edward M. Kwang President. Objective A brief demo of Crystal Report to entice you –People spend thousand of dollars to attend Crystal.
JCR Content Management Jukka Zitting
Content Repositories with CMIS and Apache Chemistry Stephan Klevenz, SAP AG November 2011.
3 Nov 2003 A. Vandenberg © Second NMI Integration Testbed Workshop on Experiences in Middleware Deployment, Anaheim, CA 1 NMI R3 Enterprise Directory Components.
© 2010 IBM Corporation WebSphere Adapter for Enterprise Content Management Systems.
AEM & TDD It’s so boring… AUGUST 6, 2015
Up to Speed with Java Content Repository API and Jackrabbit > Alexandru Popescu InfoQ.com > Jukka Zitting Day.
Getting Everyone "On Board" for a Major IT Project Presentation to CUMREC MAY 16, 2002 Warren Mills, CEO Copyright Advantiv, Inc This work is the.
Copyright © 2006 Pilothouse Consulting Inc. All rights reserved. Search Overview Search Features: WSS and Office Search Architecture Content Sources and.
Technical Update 2008 Sandy Payette, Executive Director Eddie Shin, Senior Developer April 3, 2008 Open Repositories 2008, Fedora User Group.
©Stephen Kingham SIP Protocol overview SIP Workshop APAN Taipei Taiwan 23rd Aug 2005 By Stephen Kingham
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Data Access with Spring.
Session #2482 Implementing WebDAV Using J2EE TM and Open Source Technologies Juergen Pill Team Leader Software AG Remy Maucherat Software Engineer Sun.
Apache Solr Dima Ionut Daniel. Contents What is Apache Solr? Architecture Features Core Solr Concepts Configuration Conclusions Bibliography.
Replace OpenText with Alfresco in a SAP environment
Document Management Alliance (DMA)
What’s New in Configuration Manager Since RTM How to stay current with the new coolness available Aaron Czechowski Senior Program Manager Microsoft Wally.
Interstage BPM v11.2 1Copyright © 2010 FUJITSU LIMITED ADMINISTRATION.
BOF-1147, JavaTM Technology and WebDAV: Standardizing Content Management Java and WebDAV Juergen Pill Team Leader Software AG Remy Maucherat Software Engineer.
Integrating CMS/DMS into OpenOffice Michael E. Bohn Consultant Office Migration Sun Microsystems GmbH.
The Holmes Platform and Applications
Open Source distributed document DB for an enterprise
Overall Architecture and Component Model
Data Virtualization Tutorial: JSON_TABLE Queries
Project for OnLine Instructional Support (POLIS)
Document Management Reference Model
myIS.neu.edu – presentation screen shots accompany:
An App A Day Copyright Tina Oestreich and Brian Yuhnke This work is the intellectual property of the author. Permission is granted for this material.
Jonathan Rosenberg dynamicsoft
Presentation transcript:

Developing with the JCR (JSR 170, JSR 283) Lennard Fuller JA-SIG Spring, 2008 © Copyright Unicon, Inc., This work is the intellectual property of Unicon, Inc. Permission is granted for this material to be shared for non-commercial, educational purposes, provided that this copyright statement appears on the reproduced materials and notice is given that the copying is by permission of Unicon, Inc. To disseminate otherwise or to republish requires written permission from Unicon, Inc.

1.What isn’t JSR 170? 2.What is JSR 170? 3.JSR 170 in the CM space 4.JSR 170 in Detail 5.Tips for working with JCR 6.The Future: JSR Questions?

What isn’t JSR170?

JSR 170 is NOT A Java Content Repository. A competitor of Documentum or Filenet A competitor of ANY other Content Management System or Repository in existence. A Content Management Client An Enterprise Content Management API An API which defines repository administration

What is JSR 170?

JSR 170: Java Content Repository Java Community Process Led by Day Software Officially released June 17, 2005 “Content Repository API for Java” Two levels of compatibility with optional features

“ The API should be a standard, implementation independent, way to access content bi-directionally on a granular level within a content repository. “ JSR 170 Specification

Repository D Application D API D Repository C Application C API C Repository B Application B API B Repository A Application A API A Traditional Content Management

Repository D Application D Repository C Application C Repository B Application B Repository A Application A Using JSR 170 JSR 170 API

Application D Application C Application B Repository Application A Using JSR 170: Infrastructure JSR 170 API

Application D Application C Application B Repository Application A Using JSR 170: Infrastructure JSR 170 API

JSR 170 in the CM space

Software Evolution Volume Market Evolution OS Webservers Content Industry Standard NMH Heaven Infrastructure Pervasive Software RDBMS AppServers

Competing Standards?

1.ODMA and DMA 2.WebDAV 3.iECM

ODMA and DMA ODMA: standard for integration and interoperability of desktop applications with document management systems DMA: standard for the federation of document management systems which faced out to server islands Both ODMA and DMA were dissolved prior to 2000 Both are dissolved… no competition for JCR

WebDAV Currently managed by AIIM 1996 – First Working Group Meeting WebDAV is a standard for a protocol WebDAV is an extension of HTTP Adoption of this standard is widespread WebDAV is a protocol, not an API. It is NOT competing with JCR.

iECM AIIM managed Formed by largest vendors SOA for ECM No release date scheduled. “interoperable Enterprise Content Management”

Compliant Repositories *Many more registered with TCK 3 rd Party Connectors

JSR 170 Apps and Support for Apps Many, many, many more……

JSR 170 In Detail

Basic Repository Model A repository consists of one or more workspaces A workspace contains a tree of items An item is either a node or a property A property can only be a leaf nodes encapsulate the content structure The values of the properties is where the data is stored

JSR 170: Data Model

JSR 170: Level 1 Defines a read only repository Accessing Repository Reading Repository Content Transient namespace remapping Export Repository Content Search Repository Content (XPath) Discovery of NodeTypes

JSR 170: Level 2 Includes level 1 and adds ability to mutate Adding and removing nodes & properties Writing the values of properties Import from XML Assigning node types to nodes Persistent namespace changes

JSR 170: Optional Features ‘Optional’ features? Transactions Versioning Observation Locking SQL Search

Simple Authentication Session jcrSession = null; try { // varies from CR to CR… this is simple login jcrSession = jcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray()));... } catch (RepositoryException ex) { throw convertJcrAccessException(ex); } finally { jcrSession.logout(); }

Create Node Session jcrSession = null; try {... // Get repository root node Node rootNode = jcrSession.getRootNode(); // Add new nodes node. // NOTE: until persisted new node’s UUID my be bogus! Node ferret = rootNode.addNode("ferret","zoo:animal"); ferret.setProperty (“zoo:animalName",“sparky"); Node exhibit = rootNode.addNode(“ferretExhibit","zoo:exhibit"); // persist jcrSession.save(); } catch (RepositoryException ex) { throw convertJcrAccessException(ex); } finally { jcrSession.logout(); }

Move Node try {... // ferrets are running wild!!!! Node rootNode = jcrSession.getRootNode(); // get ferret. Node ferret = rootNode.getNode("ferret"); Node exhibit = rootNode.getNode(“ferretExhibit"); // put furry one in exhibit jcrSession.move(ferret.getPath(), exhibit.getPath()+ "/"+ ferret.getName()); // persist jcrSession.save(); } catch (RepositoryException ex) { throw convertJcrAccessException(ex); } finally { jcrSession.logout(); }

Search and Remove try {... Workspace ws = jcrSession.getWorkspace(); QueryManager qm = ws.getQueryManager(); // find sparky! String queryString = Query q = qm.createQuery(queryString, Query.XPATHquery); Query Result qr = q.execute(); NodeIterator ni = qr.getNodes(); // NOTE: there could be more than one ferret named sparky! // remove all ferrets named sparky from the zoo. while (ni.hasNext()) { Node sparky = (Node) ni.next(); sparky.remove(); } jcrSession.save(); } catch (RepositoryException ex) { throw convertJcrAccessException(ex); } finally { jcrSession.logout(); }

JSR170 Repository A Application A JSR170 Repository B Application B JSR 170: Migration Export File outputFile = new File(“systemview.xml"); FileOutputStream out = new FileOutputStream(outputFile); session.exportSystemView("/zoo:ferretExhibit", out, false, false); Import File inputFile = new File(“systemview.xml"); FileInputStream in = new FileInputStream(inputFile); session.importXML ("/", in, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); session.save();

Tips For Working With JCR

What Should I Know? Select the best Deployment Model for your application and environment. Select the right Content Repository for your application and environment. –Schedule time to get to know your Content Repository Know your content, and design your tree structure carefully

Select the right Deployment Model

Application A Deployment: Model 1 J2EE Servlet Container JCR

Application A Deployment: Model 2 J2EE Servlet Container JCR Application B

Application A Deployment: Model 3 J2EE Servlet Container JCR Application B Stand Alone Application C Standalone Server Content Repository

A word on JCR Remoting NOT defined in JSR 170 specification. Currently two solutions exist –JCR-RMI existing jackrabbit implementation NOT performance friendly –REST style API Sling recently released

Select the right Content Repository

So you want to work with a JSR 170 Content Repository? Carefully consider your options. CR quality and features can vary greatly.

A Closer Look at Alfresco’s JSR 170 Alfresco Positives: –Excellent, full featured open source enterprise level CMS and WCM –Some level of JSR 170 support exists. Alfresco Issues: –Many key “optionals” not implemented. –JCR Query support not prod ready. –Remote access problemmatic.

Know your Content and Design Structure Carefully

Tips on Tree Design Know your content! Know how your selected CR treats your kinds of content First time designing tree structure for JCR? –Allow time to make mistakes –Prototype it to find mistakes Prefer deeper tree structures over wide tree structures Be certain JCR queries are NOT hardcoded.

The future: JSR 283

JSR 283: Java Content Repository 2.0 Java Community Process Led by Day Software Public draft completed Sept 10, 2007 TCK and RI slated for 2009 release. “Content Repository API for Java Version 2.0”

What is in JSR 283? Both JCR 1.0 XPath AND Sql Deprecated. JCR-SQL2 and JCR-JQOM query notations –Inner join required New Property Types i.e. –WeakReference –URI –Decimal

JSR 283: Optionals Versioning now has two optional varieties Simple and Full. Node Type Registration Activities Baselines Journaled Observations Right, Left and Full JCR-SQL2 joins supported Path supported in where clause Access control –Discovery –Policies –Entries Lifecycle Management Shareable nodes

Additional Noteworthy changes to JCR API New: javax.jcr.Binary RangeIterator.getNumberRemaining() Query.setLimit(int) Query.setOffset(int) … Deprecated: Node.getUUID() –use getIdentifier() instead NodeType.canRemoveItem(String) –Use NodeType.canRemoveNode(String) or NodeType.canRemoveProperty(String) –…

Summary What isn’t JSR 170? What is JSR 170? JSR 170 in the CM space JSR 170 in Detail Tips for working with JCR The Future: JSR 283

Resources jcr.site/index.html

Lennard Fuller Questions?