Your SlideShare is downloading. ×
Nuxeo WebEngine: a practical introduction
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

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.

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 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!