2.2.7. Der Rwt Starter

Um die Applikation mit Rwt als Webapplikation zu starten, betrachten wir das Modul org.jowidgets.helloworld.starter.rwt und dort zunächst das folgende pom.xml.

  1  <project 
  2      xmlns="http://maven.apache.org/POM/4.0.0" 
  3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  5      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6      <modelVersion>4.0.0</modelVersion>
  7  
  8      <artifactId>org.jowidgets.helloworld.starter.rwt</artifactId>
  9      <packaging>war</packaging>
 10  
 11      <parent>
 12          <groupId>org.jowidgets.helloworld</groupId>
 13          <artifactId>org.jowidgets.helloworld.parent</artifactId>
 14          <version>0.0.1-SNAPSHOT</version>
 15          <relativePath>../parent/pom.xml</relativePath>
 16      </parent>
 17  
 18      <dependencies>
 19  
 20          <!-- The ui technology independend hello world module -->
 21          <dependency>
 22              <groupId>org.jowidgets.helloworld</groupId>
 23              <artifactId>org.jowidgets.helloworld.common</artifactId>
 24              <version>0.0.1-SNAPSHOT</version>
 25          </dependency>
 26  
 27          <!-- The default implementation of the jowidgets api -->
 28          <dependency>
 29              <groupId>org.jowidgets</groupId>
 30              <artifactId>org.jowidgets.impl</artifactId>
 31              <version>${jowidgets.version}</version>
 32          </dependency>
 33  
 34          <!-- The RWT implementation of the jowidgets spi -->
 35          <dependency>
 36              <groupId>org.jowidgets</groupId>
 37              <artifactId>org.jowidgets.spi.impl.rwt</artifactId>
 38              <version>${jowidgets.version}</version>
 39          </dependency>
 40  
 41          <!-- The RWT dependency -->
 42          <dependency>
 43              <groupId>org.eclipse</groupId>
 44              <artifactId>org.eclipse.rap.rwt</artifactId>
 45              <version>2.0.0.20130205-1612</version>
 46          </dependency>
 47  
 48      </dependencies>
 49  
 50      <build>
 51          <finalName>helloWorldRwt</finalName>
 52      </build>
 53  
 54  </project>

Ab Zeile 20 wird das common Modul der HelloWorld Applikation hinzugefügt. Ab Zeile 27 folgt die Defaultimplementierung der jowidgtes API und ab Zeile 34 wird die SPI Implementierung für Rwt hinzugefügt.

Dadurch ergeben sich die folgenden (jowidgets internen) transienten Modulabhängigkeiten:

org.jowidgets.spi.impl.common

Gemeinsamer Code der von allen SPI Implementierungen genutzt wird.

org.jowidgets.spi.impl.swt.common

Die Swt SPI Implementierung.

org.jowidgets.spi.impl.rwt

Die Rwt SPI Implementierung

Selbstverständlich wird auch eine externe Abhängigkeit auf Rwt benötigt (ab Zeile 41).

Die Swt SPI Implementierung hat zudem eine externe Abhängigkeit auf MigLayout für Swt.

Betrachten wir als nächstes die Klassen HelloWorldConfiguration und HelloWorldStarterRwt

  1  package org.jowidgets.helloworld.starter.rwt;
  2  
  3  import java.util.HashMap;
  4  import java.util.Map;
  5  
  6  import org.eclipse.rap.rwt.application.Application;
  7  import org.eclipse.rap.rwt.application.Application.OperationMode;
  8  import org.eclipse.rap.rwt.application.ApplicationConfiguration;
  9  import org.eclipse.rap.rwt.client.WebClient;
 10  
 11  public final class HelloWorldConfiguration implements ApplicationConfiguration {
 12  
 13      @Override
 14      public void configure(final Application application) {
 15          application.setOperationMode(OperationMode.SWT_COMPATIBILITY);
 16          final Map<String, String> properties = new HashMap<String, String>();
 17          properties.put(WebClient.PAGE_TITLE, "Hello World");
 18          application.addEntryPoint("/HelloWorld", HelloWorldStarterRwt.class, properties);
 19      }
 20  }
  1  package org.jowidgets.helloworld.starter.rwt;
  2  
  3  import org.jowidgets.api.toolkit.Toolkit;
  4  import org.jowidgets.helloworld.common.HelloWorldApplication;
  5  import org.jowidgets.spi.impl.rwt.RwtEntryPoint;
  6  
  7  public final class HelloWorldStarterRwt extends RwtEntryPoint {
  8  
  9      //URL: http://127.0.0.1:8080/helloWorldRwt/HelloWorld
 10      public HelloWorldStarterRwt() {
 11          super(new Runnable() {
 12              @Override
 13              public void run() {
 14                  Toolkit.getApplicationRunner().run(new HelloWorldApplication());
 15              }
 16          });
 17      }
 18  
 19  }

In Zeile 14 wird analog zu Swing und Swt die Applikation mit Hilfe des ApplicationRunners gestartet.

Für die Webapplikation ist zudem noch die folgende web.xml Datei erforderlich.

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <web-app 
  3      xmlns="http://java.sun.com/xml/ns/j2ee" 
  4      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  6      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  7      version="2.4">
  8  
  9      <display-name>Hello World Rwt</display-name>
 10  
 11      <context-param>
 12          <param-name>org.eclipse.rap.applicationConfiguration</param-name>
 13          <param-value>org.jowidgets.helloworld.starter.rwt.HelloWorldConfiguration</param-value>
 14      </context-param>
 15  
 16      <listener>
 17          <listener-class>org.eclipse.rap.rwt.engine.RWTServletContextListener</listener-class>
 18      </listener>
 19  
 20      <servlet>
 21          <servlet-name>HelloWorld</servlet-name>
 22          <servlet-class>org.eclipse.rap.rwt.engine.RWTServlet</servlet-class>
 23      </servlet>
 24  
 25      <servlet-mapping>
 26          <servlet-name>HelloWorld</servlet-name>
 27          <url-pattern>/HelloWorld</url-pattern>
 28      </servlet-mapping>
 29  </web-app>

Um die Applikation zu starten, muss zunächst das helloWorldRwt.war gebaut werden. Dazu kann man in der Konsole im Verzeichnis helloworld/parent den Befehl

    mvn clean install

eingeben. Im Ordner helloworld/org.jowidgets.helloworld.starter.rwt/target findet sich dann die Datei helloWorldRwt.war. Diese kann zum Beispiel in einem Tomcat deployed werden. Macht man das lokal, kann man die Applikation dann mit der Url: http://127.0.0.1:8080/helloWorldRwt/HelloWorld im Browser starten.

Die folgende Abbildung zeigt das Hello World Fenster im Firefox Browser.

Abbildung 7. Hello World Rwt

Hello World Rwt

Für ein tieferes Verständnis von Rwt sei auf die RAP / RWT Dokumentation verwiesen.

Weitere Information zum Thema jowidgets und RAP / RWT finden sich im Abschnitt Jowidgets und RAP


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation