Twitter Logo Follow us on Twitter
Project Information About this project

RAP 1.5 M1 - New and Noteworthy

Here's a list of the most noteworthy things in the RAP 1.5 M1 milestone build which is available for download since August 19, 2011.

q07 Fragment removed

The fragment org.eclipse.rap.rwt.q07 is no longer needed and has been removed. The contents are now located in the org.eclipse.rap.rwt bundle.

The q07 fragment had originally been introduced to be able to support different versions of the qx client library. Meanwhile, we decided to maintain and evolve our own copy of this client library (bug 320993), so the fragment is not needed anymore. However, with the new protocol (bug 311355), it will become possible to plug in alternative clients for RAP.

OSGi Integration

A new bundle org.eclipse.rap.rwt.osgi has been introduced that integrates RAP with OSGi. With this architectural change, it is now possible to use RWT in OSGi applications without having to include org.eclipse.rap.ui and all its dependencies. Instead of registering your RAP application's entrypoint, theme, etc. as extensions (which involves dependencies to the extension registry and more equinox core bundles), you can now implement the service interface org.eclipse.rwt.engine.ApplicationConfigurator and register it as an OSGi service.

public class MyConfigurator implements ApplicationConfigurator {
  public void configure( ApplicationConfiguration configuration ) {
    configuration.addEntryPoint( "default", SimpleEntryPoint.class );
    configuration.addBranding( new AbstractBranding() {
      public String getServletName() {
        return "myapp";
    } );

The RAP workbench also uses this new bundle to connect with an OSGi HTTP service, so you'll always have to add this new bundle to your launch configurations.

Runtime Feature Split

The runtime repository now contains two different features: One contains only the RAP bundles and the other feature provides all bundles that are required for a complete RAP target platform. If you want to create a simple RAP target platform, you'll need both.

This split will make it easier to work with mixed targets. If you already have the Equinox Core SDK and Jetty, you'll only need to add RAP itself. This way, you prevent duplicate bundles in your target platform.

Failover and Clustering Support

Support for transparent session failover was added to RWT. This enables applications to run in a high-availability cluster.

RWT had to be extended in two places to achieve this. An alternative life cycle was implemented that does not use a UI Thread because threads cannot be migrated. With this simple life cycle implementation, RAP isn't fully compatible with SWT anymore, but the differences are small. As a side effect, this life cycle also eases integration with JEE and other technologies that use thread-local variables to access to security or transaction contexts.

The second area of work was to enable sessions to be replicated between cluster nodes. Therefore all classes in RWT whose instances will have session scope were made serializable. Note that application code must also be prepared in that all objects that live in the session scope must be serializable.

Serializable RWT sessions can also be used to swap inactive sessions onto disk and thereby releasing the memory consumed by them. This allows for infinite session timeout settings and saves users from annoying 'the session has timed out' messages.

For further details, please visit our Cluster wiki page.

UICallback Improvements

The UI callback was redesigned and made more robust.

When a callback request fails, the client sends a new callback request to re-establish the broken callback connection. To avoid unnecessary load on the client, retry requests are sent with a suitable delay.

On some servlet engines, an active UI callback prevented the session from expiring. This has been solved so that applications can activate the UI callback without interfering with the session timeout.

The Server Push wiki page summarizes how the mechanism works internally.

Text Shadows

The Theming now supports text shadows for most widgets that display text: Shell, Label, CLabel, CTabFolder, Button, DateTime, ExpandBar, Group, Link, List, Spinner, TabFolder, Menu, ToolTip, Combo, CCombo, Tree, Table, Text, and ToolBar

Text shadows are not available in Internet Explorer due to this browser's lack of support for this feature. Transparency for text shadows is supported using the rgba notation for color. Example:

Button {
  text-shadow: 0 1px 0 rgba( 0, 0, 0, 0.3 );

Virtual Tree

The server-side part of the Tree widget was considerably improved and optimized. Now, a Tree with SWT.VIRTUAL style can handle huge item counts without performance degradation.

For a live demo, check out the tab called Complex Data in our Examples demo.


This list shows all bugs that have been fixed for this milestone build.

Previous Builds

The above features are just the ones that are new since the last milestone build. Summaries for earlier builds: