Eclipse Apricot

Post on 18-Dec-2014

1323 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Nuxeo World 2011 - Overview of Content Repositories and the Eclipse Apricot Platform

Transcript

Open Source ECM

Florent Guillaume, Bogdan Stefanescu2011-10-20

Eclipse ApricotOverview of Content Repositories and the Eclipse Apricot Platform

• What Is a Content Repository?

• Eclipse Apricot: Features & Benefits

• Apricot Modularity

• The Future of Apricot

2

Agenda

What Is aContent Repository?

3

What Is Content?

4

• Everything is content!

• Unstructured• Files, Images, Assets, XML, Binary streams

• Structured• Schema, Metadata, Business Data, Tables

• Semi-Structured• Files + Metadata, Web pages (assemblies, relations),

Emails (attachments), Record Management

• Between Application and Storage Subsystem• Does not replace either

• Persistence Service• Stores structured and unstructured content

• High-Level Abstraction• Stop caring about storage details

• Focus on your domain model and its objects5

A Content Repository is Middleware

6

• Not a CMS (WCM, ECM, ...)• A CMS is one application on top of a Content Repository

• Not a filesystem• If all you have is a filesystem, everything looks like a file

• Not an ORM• Not that granular, don’t think in SQL terms

• Not just for storage• Provides Services, Domain Model / Business Model

What a Content Repository Is Not

Eclipse Apricot

7

Eclipse Apricot

8

• OSGi framework

• Under the Eclipse Runtime project• Currently in the Incubation phase

• Mentored by Gary Xue (Actuate) and Cédric Brun (Obeo)

• Contributed by Nuxeo, from Nuxeo Core

• http://www.eclipse.org/apricot

What Is Apricot?

9

• Content Repository

• Web Support

• Content Automation

• CMIS

• Types and Schema definition

• Persistence

• Query

• Access Control

• Locking

• Versioning10

Apricot: Content Repository

• Expose content on the web

• Fast framework based on JAX-RS

• Provides FreeMarker templating (pluggable)

11

Apricot: Web Support

• Based on Commands/Operations

• Build reusable business logic

• Accessible from UI frameworks and HTTP/ReST

12

Apricot: Content Automation

14

Native Java API

OpenCMIS Java API

HTTP (CMIS)

OpenCMIS Automation

HTTP

Core Services

VCS

Binary Store SQL Backend

SQL DatabaseFilesystem

Other Backend

Cloud

When to Use Apricot?

15

• Need to store Objects with Properties• And also Files

• Don’t want to write SQL• But be able to fall back to SQL if really needed

• Need Access Control

• Need Versioning, Queries, ...

• Don’t want to reinvent the wheel

Why Is Apricot Good?

• Modular

• Fast

• Safe

• Scales

• Full-featured services

• Battle-tested16

17

• Uses OSGi deployment• OSGi bundles

• Dynamic lifecycle

• Extension points• XML

• Inspired by those from Eclipse

Apricot: Modular

• Efficient use of storage backends• Use their native features and strengths

• Don’t reinvent transactions, relations

• Caching

• Batching

18

Apricot: Fast

Apricot: Safe

• Transaction-aware• Rollback everything at once

• Hot backups• Don’t stop the system

19

• Clusterable on top of a standard SQL database

• Architecture ready for NoSQL backends

• Pluggable Binary Store• Filesystem, SQL, Amazon S3, etc.

• Lockless

20

Apricot: Scaling

• Queries (NXQL, CMISQL, pluggable)

• Versioning (pluggable)

• Locking (synchronous, cluster-aware)

• Access Control (groups, grant/deny, inheritance)

• Proxies (shortcuts)

• Events & Listeners (sync, async, async post-commit)

• Audit Trail 21

Apricot: Full-Featured Services

• Originates from Nuxeo Core

• Used in Nuxeo DM, Nuxeo DAM, Nuxeo CMF

• In production for 4 years

• Thousands of deployments

22

Apricot: Battle-Tested

Apricot and Modularity

23

Choosing a Modularity Framework

• Java SE• No bundle life cycle, no modularity, no extension system

• Java EE• All is packaged as one big application (EAR or WAR),

cannot update or add a feature without recompiling the entire application

• OSGi — yes, but...24

Additions Needed to OSGi

• To achieve a plugin model• Eclipse already had the answer: extension points

• To provide enterprise features• No real OSGi Enterprise Framework implementations yet

25

Extension Points

• Eclipse used EXSD, which is very tied to PDE• (remember it was 2006 and we had to use maven)

• Nuxeo redefined something similar but more flexible• No intermediate object model between services and

contributed extensions

• Write an extension class and map it to XML using Java annotations

• Easy to write for developers, no specific IDE needed26

27

Extension Point Example

28

• Apricot should be able to run in an Application Server (as a WAR)

• Java EE configuration is monolithic• To declare servlets (web.xml) one must know in advance

the servlets provided by all the different bundles, same for application.xml

• Apricot is dynamic: bundles may be installed at runtime

• Java EE components declared by bundles must be installed at runtime

Integrating with Java EE

Nuxeo Configuration Fragments

29

• Using templates for Java EE configuration files• Dynamically generate web.xml and application.xml at

application startup from the configuration contributed by each bundle

• Ability to package WAR applications that can adapt themselves to the configuration provided by new application bundles

• No need to have different product packagings for different configurations

• Needs a server-specific bridge to do this processing

Configuration Fragment Example

30

Apricot Configuration Fragments

31

• Convert all configuration fragments into runtime extension points

• Declaring a servlet is done by contributing an extension point

• Servlets can be installed at runtime when the bundle declaring them is activated

• Provide a bridge to interact with the host application server

Java EE Features

32

• Full OSGi integration of JAAS (authentication system)

• Full JTA support through Apache Geronimo (transactions)

• Full JCA support through Apache Geronimo (resource adapters and pooling)

• In-memory JNDI server

• Future plans to integrate the work done in the Gemini project (and also support Virgo)

The Future of Apricot

33

Where Are We Going?

34

• Finish Apricot first release• Cleanup, testing framework

• Replace Nuxeo Core with Apricot• Nuxeo Core running under a full OSGi container

• Bridge for non-OSGi application servers

• Update JSF and Seam to Java EE 6

• Use CDI for easier access to services

• Better IDE support

Thank You!

35

#NxW11

top related