Presentation is loading. Please wait.

Presentation is loading. Please wait.

Overall Architecture and Component Model

Similar presentations


Presentation on theme: "Overall Architecture and Component Model"— Presentation transcript:

1 Overall Architecture and Component Model
Nuxeo Platform Overall Architecture and Component Model

2 Nuxeo Platform A highly customizable and extensible content management platform for building business applications Bundled Architecture Deploy only the required bundles Develop and add custom plug-ins Deploy on multiple servers Deploy on multiple infrastructures As a standalone Within Junit System On Tomcat Server Connect to various persistence stores SQL Database LDAP and NoSQL Databases Filesystem Storage

3 Architecture Content Repository Content Automation REST API
Persistence, query, versioning and access control of documents Handles Documents: Files, meta-data and any structured data Integrated with Elastic Search and MangoDB Content Automation Exposes common Nuxeo actions as atomic operations Can be assembled to orchestrate complex business rules and logic REST API Exposes common Nuxeo resources Workflow Engine Built on repository and automation, as a graph Typically developed using Nuxeo Studio Support for UI Frameworks JSF/SEAM, HTML5/JavaScript, Portal Technologies and etc.,

4 Bundle Based Component Model
Nuxeo Bundle A pluggable JAR with an OSGI dependency manifest Everything in Nuxeo is packaged as a bundle May contain one or more components, services and extension points Component A software object declared via XML Primarily to expose a service Service A software object that can be registered, discovered, listed and accessed Extension Point Entry-point for services to inject customization To configure or extend a service or a component

5 OSGi Bundle Concepts A OSGi Bundle is a JAR with META-INF/MANIFEST.MF with OSGi headers Some of the important headers Bundle-SymbolicName Bundle-Version: mahor.minor.patch-<TAG> Export-Package: List of packages whose classes are made visible to others Import-Package: List of packages to be discovered from exporting bundles Verions Selection: Example: [1.2.0, 1.3.0) JDK Classes are always visible for every-one Bundle-Activator: Bootstrap class that do housekeeping for the bundle Bundle-ActivationPolicy: Activates the bundle only when a class is loaded from it Require-Bundle: For split-bundles Fragment-Host: For optional features/resources/etc., Bundle-RequiredExecutionEnvironment: JRE Bundle-Classpath: Internal classpath of the bundle Service-Component: For declaring components via declarative services

6 OSGi Bundle Concepts Bundles are stateful objects The State Life-cycle
Installed: Bundle is deployed in the OSGi Container Resolved: Bundle dependencies are successfully resolved Delegates to JRE class-loader for java.* or javax.* classes. Stops on fail. Delegates to exporting class-loader. Stops on fail. Delegates to requiring-bundle class-loader. Continues on fail. Delegates to host & fragment-bundle class-loader. Stops on fail. Searches the own classpath Starting: Bundle is running Activator to start the bundle Stopping: Bundle is now ready for exposing/using other bundles/services/components Active: Bundle is running the Activator to shutdown the bundle Uninstalled: Bundle is un-deployed from the container

7 OSGi Bundle Concepts OSGI Compendium Services Declarative Services
Service Registry Builds an SOA within JVM Services register them selves (typically in the activators) Service Locator publishes the services Clients discover the services EventAdmin Services A system service for asynchronous communication among components Config Management Services A system service to reconfigure the components without restart Declarative Services An approach to build services using POJOs, normally using Spring IoC Nuxeo offers API for service discovery Framework.getService(<T>)

8 Contributing to Extension
You have a maven project Develop the contribution Locate the folder src/main/resources/OSGI-INF Create a contribution file Probably named as myproject-target-service-contribution.xml Declare a component in the contribution file <component name=“unique.name”> <extension target=“existing.service.name”> <!– extensions -- > </extension> </component> Declare the contribution in the bundle Locate the file src/main/resources/META-INF/MANIFEST.MF Add/update the header Nuxeo-Component by providing the contribution xml file name

9 Bundle Deployment Process
Nuxeo Deployment Process is incremental involving phases Template Processing Reads templates and generates configurations Configuration may include data source settings, SMTP settings and etc., Profile system for quick configuration Deployment Fragment Preprocessor The target WEB application acts as a host for several fragment bundles Typically used for mutually exclusive resource bundles Fragments may provide i18n, WAR resources and etc., Bundle Deployment Actual OSGI deployment Activates bundles WAR Deployment Web Resource Declaration

10 Adding a New Feature A new feature addition usually comprises of several bundles Core Contrib Bundle With direct contributions to the repository Document Types, Listeners, Security Policies Core Bundle POJO implementations of components and services Façade Bundle With JEE Bindings JTA, Remoting, JAAS, Transactions API Bundle Service API Interfaces and remotable DTO objects Client Bundles Views and Actions


Download ppt "Overall Architecture and Component Model"

Similar presentations


Ads by Google