Web Client

Technical Overview

Technical Training Slides

Product 360 Web UI and Application Server

The Web UI modules run directly within the Product 360 Server. That means that during deployment, no additional Web/Application Server is needed. Instead, all functionality is implemented within a set of OSGi modules on top of the Product 360 SDK.

images/download/attachments/158020473/WebAccessWithinProductManager.PNG

For more information on installation and deployment scenarios refer to the installation guide.

Technology Stack

OSGi

Since the Product 360 Server is an Eclipse RCP based application that uses OSGi as modularization container, all Web UI modules are OSGi bundles, too.

Guice

Google Guice is used as dependency injection framework. Each OSGi bundle typically provides a Guice module. Guice modules are registered using an Extension Point and are picked up during the application bootstrap to resolve all dependencies.

An important aspect when binding classes to a guice context are scopes. The following scopes are used in the Web UI:

  • Application scope, i.e. a single instance for the application. These classes must be implemented thread safe as they are shared by multiple sessions / requests.

  • Session scope, i.e. a single instance per http session. Within a session, multiple application windows can exist. Implementation don't need to be thread safe, as Vaadin synchronizes on the Application object.

  • Window scope, i.e. a single instance of browser tab (window).

The definition of scopes must be done carefully, to avoid unintended sharing of resource, concurrency issues or dead locks.

Vaadin

The Web UI Widget Toolkit is provided by Vaadin. Vaadin provides a server-side programming model for web applications. It uses GWT on the client for rendering and a proprietary protocol for syncing changes between the server's session state and the client's ui in the browser. You can check the exact Vaadin version used by searching for the Vaadin plugins in the Servers plugin folder of your deployment.