Web Client
Technical Overview
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.
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.