Java/JEE Google Web Toolkit (Teil III) Seamless – Die nahtlose Verbindung von Seam und GWT Soll das Frontend als Rich Client oder als klassische request/response-basierte Webanwendung Dieser Artikel richtet sich an Entscheider und Entwickler, die das Google Web Toolkit für die Entwicklung von Webapplikationen nutzen wollen. umgesetzt werden? Diese Frage stellt man sich im Vorfeld vieler Projekte. Bei eingabelastigen Anwendungen wird in der Regel ein request/response-basiertes Webframework wie JSF eingesetzt. Soll die Anwendung dem Nutzer aber einen hohen Bedienkomfort sowie das Gefühl einer Desktop-Anwendung bieten, so führt kein Weg an einer Rich-Client-Lösung wie dem Google Web Toolkit (GWT) vorbei. Integration von GWT in eine JBoss-Seam-Applikation In Projekten, in denen komplexe Anwen-dungen Vorbereitungen auf der Client-Seite Der Google Web Toolkit Client erhält zu-nächst ein synchrones und ein asynchrones mit vielseitigen Teilkomponenten ent-wickelt werden, müssen bei der Wahl des Interface. Das synchrone Interface (siehe Abbildung 2) erweitert das GWT Interface RemoteService und kennzeichnet damit die Methoden, die über einen Webservice verfüg-bar Webframework Kompromisse eingegangen werden. Die Integration von zwei Frameworks kann die Entscheidung erleichtern. Um z.B. Teile einer Webanwendung als browser-basierten Rich Client mit Drag-And-Drop-Funktionalität umzusetzen, kann eine Teilapplikation mit GWT in eine Seam-Applikation integriert wer-den. gemacht werden. Beide Interfaces stehen in logischer Beziehung zueinander. Das asyn-chrone Interface (Abbildung 3) baut auf dem synchronen auf und unterscheidet sich von diesem in zwei Punkten. Im asynchronen Interface werden alle Methodendeklarationen Das Projekt kann somit von den jeweiligen Vorzügen der verschiedenen Frameworks profitieren. Die Integration funktioniert unkompliziert, da die serverseitige Funktionalität einer GWT-Applikation um ein Objekt vom Typ AsyncCallback erweitert. Über dieses wird der Client benachrichtigt, sobald ein Metho-denaufruf abgeschlossen ist. Ohne diesen Callback-Mechanismus wäre ein Aufruf für den Client blockierend und dann per Definition syn-chron. als Servlet implementiert wird. Der Webcontainer ermöglicht hierbei eine automatische Zuordnung von GWT Client und der zugehörigen GWT-Server-Instanz. Diese GWT-Server-Instanz kann wiederum gleichzeitig als Seam-Komponente betrie-ben Der zweite Unterschied besteht in dem fehlenden Rückgabewert der Methoden. Die Begründung liegt auch im Callback-Mecha-nismus, der den Methodenrückgabewert im Objekt vom Typ AsyncCallback kapselt. Das asynchrone Interface wird niemals direkt implementiert, sondern von GWT zur automa-tischen werden und somit die Schnittstelle zur Seam-Applikation bilden. Abbildung 1 verdeutlicht die architektonischen Zusammenhänge zwischen den folgenden Schnittstellen, Klassen und Framework-Kom-ponenten. Generierung eines Proxy benötigt, auf den im Abschnitt „Kommunikation aufbauen“ eingegangen wird. ORDIX News 4/2011 15