Didier Parigot

Zenith INRIA Team

INRIA Sophia Antipolis
Batiment Fermat, F109
2004 Route des Lucioles
BP 93
06902 Sophia Antipolis
Cedex France

Didier.Parigot@inria.fr
Tel : (33-4) 4 92 38 50 01
Fax : (33-4) 4 92 38 76 44



GWT Introduction ¶

Google Web Toolkit est un outil capable de compiler du code Java en Javascript. GWT offre un modèle de programmation d'interfaces graphiques AJAX en Java (à la Swing), et son compilateur transforme cette programmation Java en interface AJAX (donc avec du Javascript, publié dans un dossier war/APPLICATION, au lieu de bin/). Pour faciliter la communication de l'interface client léger avec le serveur, GWT offre un modèle de communication type RPC, qui gère la synchronisation des interfaces de communication du client et du serveur et la sérialization des objets.

GWT est modulaire et la description des modules et des dépendances se fait dans un fichier XML. Un projet se structure avec un package client et server, et un dossier public pour tout les documents qui simplement copié dans le côté client. Le fichier XML est placé au même niveau que ces trois dossier client, server et public. Editeur d'interfaces GWT interactif ¶

GWT-Lab http://jimcampsw.x10hosting.com/Gwtlab.html

Integration avec les composants ¶

Les composants peuvent avoir une interface GWT pour contrôler le code métier. L'interface doit être alors intégré dans la facade.

Dans l'exemple du transport ou dans le chat, l'interface est publiée lors de la création du composant, donc dans la facade. L'interface peut interagir avec le composant et inversement, par le biais de la Servlet (le code GWT côté serveur).

Pour publier l'interface GWT, la facade doit demander à l'activateur le BundleContext? pour aller chercher le HttpService?. Une fois le HttpService? trouvé, il faut enregistrer le dossier GWT généré dans une URL disponible, et instancier la Servlet dans le nom que l'interface est capable de trouver (Voir classe utilitaire ServiceUsage? dans le code GWT client).

final ServiceReference svc = context.getServiceReference(HttpService.class.getName()); if (svc != null) {

	httpService = (HttpService) context.getService(svc);
	if (httpService != null) {
		// Register servlet
		try {
			final Dictionary<String, String> initparams = new Hashtable<String, String>();
			initparams.put("name", "TransportClientService");
			httpService.registerResources(
					"/inria.lognet.transport.client.TransportClient",
					"/inria.lognet.transport.client.TransportClient",
					null);
			httpService.registerServlet(
					"/inria.lognet.transport.client.TransportClient/TransportClientService",
					Activator.gwtService, initparams, null);
		} catch (final Exception e) {
						e.printStackTrace();
		}
	}

}

Type d'association des applications GWT aux composants SmartTools : cas du chat et de transport ¶

Dans le cas de transport, le bundle publie une seule application GWT, donc pour tout le type. L'adresse URL de l'application est fixe, mais il faut un système pour lister les instances de composants et sélectionner à quelle instance de composant on veut parler.

Dans le cas de chat, on publie une application GWT pour chaque instance de chaque, qui sera donc associée directement à la facade de l'instance du composant. Par contre, l'adresse URL est dynamique et une structure URL a été adopté ("http://.../smarttools/TYPE/NOMINSTANCE/PAGE.html") Du coup il n'y a pas de mécanisme supplémentaire à mettre en place.

Utilisation ¶

Depuis GWT 1.6, Google offre enfin une intégration avec Eclipse.

http://code.google.com/eclipse/

Les composants sont des projets GWT, il suffit de cliquer sur la boîte à outil rouge (logo de GWT) pour compiler le projet GWT. Faire un refresh après compilation, c'est toujours prudent. Le dossier war doit être un dossier source, pour que ce qui est compilé soit présent dans le build du composant.

Intros ¶

http://code.google.com/webtoolkit/gettingstarted.html

http://gwt.google.com/samples/Showcase/Showcase.html

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=GettingStartedHostedMode

Client UI ¶

http://code.google.com/webtoolkit/tutorials/1.5/index.html

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=GettingStartedBasics

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideWidgetGallery

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideUserInterface

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJavaCompatibility

Client to Server Communication (RPC) ¶

http://code.google.com/webtoolkit/tutorials/1.5/RPC.html

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuidePlumbingDiagram

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideGettingUsedToAsyncCalls

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideRPCDeployment


INRIA main page LIRMM main page