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:
Gemeinsamer Code der von allen SPI Implementierungen genutzt wird.
Die Swt SPI Implementierung.
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.
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