GWT Super Development Mode mit externem Application Server in Eclipse (JWT und Tomcat)

Erstellt auf Basis von JWT 5.5.0.0

Diese Anleitung beschreibt Schritt für Schritt, wie Eclipse konfiguriert wird, um den GWT Development Mode in Kombination mit einem Tomcat zu verwenden. Ziel ist es dabei den standardmäßig im Development Mode verwendeten Jetty Servletcontainer durch Tomcat zu ersetzen.

Motivation dafür ist, dass der in GWT enthaltene Embedded-Jetty-Snapshot der Version 9.2.14.v20151106 für Entwicklungszwecke häufig nicht mehr ausreicht und es außerdem häufig wünschenswert ist, die Entwicklung möglichst nah an der Produktivumgebung durchzuführen.

Ein Problem mit diesem Jetty ist zum Beispiel die GWT-(De)Serialisierung von Custom Field Serializern innerhalb des Websocket-Containers. Hier gibt es Classloader-Probleme, die das Deserialisieren über GWT von Custom Fields fehlschlagen lassen.

Dies wird für Integrationen dann relevant, wenn JWT 5.6.0.0 so konfiguriert ist, dass Websocket als Transportmethode Verwendung findet.


Prinzipiell können gemäß dieser Anleitung neben Tomcat auch anderere Servlet Container für die Verwendung mit dem GWT Development Mode konfiguriert werden.


Quelle

Diese Anleitung basiert auf dem folgenden Video: https://www.youtube.com/watch?v=-_YcBeI_Feo


Im Folgenden werden die wichtigsten Punkte daraus isoliert, sowohl textuell als auch mit Bildern.

Step-by-step Guide

  1. Tomcat einrichten
    1. Tomcat herunterladen und in ein Wunschverzeichnis entpacken:
      • Link: Tomcat v9
      • In der Navigationsleiste auf der linken Seite kann man auch andere (eventuell neuere) Versionen wählen.
    2. In Eclipse die Server View öffnen
      • Falls sie bisher nicht existiert, kann man sie über das Menü wie folgt erreichen:
        • Window -> Show View -> Other...
        • Hier nach "Servers" suchen und die View öffnen
    3. Tomcat hinzufügen:
      • Rechtsklick innerhalb des Server-Views
      • Dann New -> Server klicken



      • Unter Tomcat die Version auswählen, welche heruntergeladen wurde (hier: Tomcat v9) und dann auf "Finish" klicken.



      • Im folgenden Fenster auf "Browser..." klicken und das lokale Verzeichnis des zuvor entpackten Tomcat auswählen (hier: apache-tomcat-9.0.5). Dann "Ok" drücken und schließlich "Finish".



      • Daraufhin erscheint der Server mit dem gewählten Namen im Server View:



      • Diesen doppelklicken und auf den Tab "Modules" gehen, dort "Add Web Module..." klicken und die entsprechende Demo wählen, die ausgeführt werden soll (in diesem Beispiel Enterprise Demo), dann "OK" drücken:



      • Jetzt den Server mit der Demo mittels Rechtsklick in der Server-View und "Debug" starten:



      • Ist dieser gestartet, wird angezeigt, dass die Demo mit dem Server synchronisiert wurde:

      • Zum Schluss muss noch der Deployment-Ordner herausgefunden werden. Dazu geht man in die "Debug Configurations", wählt die erstellte Debug-Konfiguration für Tomcat aus und geht auf den Tab "Arguments". Dort kopiert man den Pfad unter dem Parameter "-Dwtp.deploy":



      • Der Kopierte Pfad wird für den GWT-DevMode (nächstes Kapitel) gebraucht
  2. Development Mode konfigurieren:
    1. Man wählt die Demo aus dem Workspace aus, rechtsklickt diese und betätigt "Debug As". Nun sieht man die drei Möglichkeiten, den DevMode zu starten (roter Kasten) :



      Das sind:
      • (Fehler) GWT Development Mode with Jetty
        • Startet den DevMode in einem mit dem GWT mitgelieferten Embedded Jetty der Version 9.2.14.v20151106 
        • Wurde bisher verwendet, ist jedoch leider veraltet und kommt mit neuen Technologien nicht zurecht (bei der spezifischen Serialisierung mit GWT gibt es hierbei Probleme). 
      • (Fehler) GWT Legacy Development Mode with Jetty
        • Ist deprecated und nicht relevant.
      • (Haken)  GWT Development Mode (mit beliebigem Server)
        • Startet den Development Mode auf einem beliebigem Application Server. Die Aktualität hängt hierbei ausschließlich vom gewählten Server ab!
    2. Dort wählt man "GWT Development Mode" und lässt ihn starten. In diesem Beispiel wird die Enterprise Demo gestartet. Ist der Development Mode gestartet, so kann man ihn gleich wieder stoppen, da zunächst noch seine Parameter zu konfigurieren sind (siehe nächster Schritt).
    3. Jetzt findet man in den "Debug Configurations" einen Eintrag dafür. Diesen selektiert man und wählt den Tab "Arguments". Dort fügt man den Parameter "-launcherDir" ein und als Wert den Pfad zum  aus dem Letzten Punkt von "Tomcat einrichten" :
      • Diesem Pfad muss noch der Name des Deplyoments angefügt werden. Weiter oben sieht man, dass dies "webtoolkit-demo-enterprise" ist.
      • Deployment folder + Document Base = "C:\Development\Workspaces\workspace-webtoolkit\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\webtoolkit-demo-enterprise", wobei:
        • Deployment folder = "C:\Development\Workspaces\workspace-webtoolkit\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps"
        • Document Base = "webtoolkit-demo-enterprise"
      • Beispiel mit dem kompletten Pfad aus dem vorausgehenden Beispiel:



      • Nachdem man den Wert mit "Apply" bestätigt hat, kann man den Server per "Debug" starten.
  3. Demo im Browser laden:
    • Im Browser die URL http://localhost:8080/<deployment name> aufrufen, wobei <deployment name> durch den Namen des Deployments ersetzt werden muss, im Beispiel "webtoolkit-demo-enterprise". Die URL würde also http://localhost:8080/webtoolkit-demo-enterprise/ lauten.
    • Jetzt startet der Compilevorgang der GWT-Clientanwendung im Browser
    • Fertig!