Nuxeo WebEngine: a practical introduction


Published on

This tutorial introduces the main concepts behind Nuxeo WebEngine, a new agile Web framework recently introduced by Nuxeo and present interactively how one can quickly develop a simple application.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Nuxeo WebEngine: a practical introduction

  1. Nuxeo WebEngine a practical introduction Bogdan Stefanescu |
  2. Overview ● What is WebEngine? ● Architecture ● JAX-RS ● Object Model ● Scripting ● Templates
  3. Overview ● Examples ● Creating a JAX-RS resource ● Creating a Web Module ● Working with Web Objects ● Working with Web Adapters ● Managing Links ● Internationalization
  4. WebEngine – What Is? A framework to build RESTful Web Applications on top of the Nuxeo Platform. Goals: ● Rapid development of Web Applications: intuitive and extensible model, scripting, fast startup time, hot reload etc. ● An unique platform to develop all kind of content oriented Web Applications including – Content oriented Web sites. – REST services for Nuxeo Platform. – Rich front ends based on AJAX frameworks like GWT. ● Pleasant coding experience ● Light packaging
  5. WebEngine - Features ● Powerful Object Model built on top of JAX-RS. ● Full Groovy Scripting support. ● Powerful template engine based on Freemarker ● Content Management through Nuxeo Platform ● Packaged in several flavors: ● Standalone server with GlassFish v3 embedded ● Standalone server with Jetty embedded ● Tomcat Web Application ● Nuxeo EP plug-ins
  6. Architecture - JAX-RS ● WebEngine model is based on JAX-RS standard. ● JAX-RS is a Java API to build RESTful Web Services. ● JAX-RS is exposing Java objects as Web resources. Binging objects to Web resources is done by using Java annotations. ● HTTP requests will be resolved to JAX-RS resources that will be manipulated using common HTTP methods like GET, POST, PUT, DELETE, HEAD.
  7. Architecture – Object Model ● Why an Object Model on top of JAX-RS? ● Provides a coherent model to build modular applications. ● An Web Application is deployed as an Web Module. ● Web Modules can extend other Web Modules. ● Web Modules are bound to a fixed Web path and provides access to Web Resources defined inside the module or in extended modules. ● Web Resources are extensible and can be shared between modules.
  8. Architecture – Object Model ● Why an Object Model on top of JAX-RS? ● Provides a coherent model to expose Java Objects as Web Resources. ● Web Module Entry Point – the root resource that is the entry point for any request on the module. It is explicitly bound to a Web path using @Path annotation. ● Web Objects – sub-resources that are exposing concrete functionality. ● Web Adapters – sub-resources that enable to easily extends existing Web Objects.
  9. Architecture – Web Modules ● An Web Module is defining: ● Web Resources and templates to expose. ● Static and i18n resources (CSS, PNG etc) ● An Web Path under which the module resources can be found ● A JAX-RS root resource – which will usually dispatch any request to sub-resources like Web Objects and Web Adapters ● Inherited Web Modules
  10. Architecture – Web Objects ● Web Objects are JAX-RS resources that expose concrete objects to the Web. ● Web Objects have a type and a set of optional facets. ● Web Object types can be derived to create new types that inherit behaviors from the super type. ● Facets describes the Web Object behaviors. ● Web Objects may define views using template files.
  11. Architecture – Web Adapters ● Web Adapters are JAX-RS resources that can be used to expose additional functionalities on existing Web Objects. ● Is a specialized Web Object and have a type and optional facets like any other Web Object. ● Can be restricted to adapt only specific Web Objects by using filters based on target Web Object type and facets. ● Are invoked using a @ prefix ● Example: GET /my/doc/@versions
  12. Architecture – Documents ● WebEngine is providing built-in support to expose Nuxeo Documents as Web Objects. ● Document Types are mapped to Web Objects by respecting the document type hierarchy. ● Provides a generic Document Object that will catch any document type which is not explicitly exposed. ● Document types and facets are transparently mapped as Web Object type and facets. ● Several Web Adapters are provided: Versioning Adapter, Lock Adapter, Relations Adapter etc.
  13. Architecture – Scripting ● Built-in Groovy scripting. ● Any Web Resource can be defined as a Groovy object. ● Java and Groovy share the same Class Path. ● One can build mixed Web Modules with both Groovy and Java objects. ● A Groovy object may call or extend any Java object and vice-versa. ● Hot reload of Groovy classes in debug mode.
  14. Architecture - Templates ● The template engine is building client responses using template files. ● Based on Freemarker engine. ● Custom extensions to add dynamic blocks, Wiki rendering etc. ● Dynamic Blocks are used to create extensible templates. ● Templates that define dynamic blocks may e extended by other templates that may redefine any block.
  15. Examples – JAX-RS
  16. Examples – Web Module
  17. Examples – Web Object
  18. Examples – Web Adapter
  19. Examples – Templates
  20. Examples – Links
  21. Examples – Internationalization
  22. Thank you!