You are on page 1of 3

http://www.mediapluspro.com/mediaplus66/client_net/mediabook/med...

Déploiement d’une application sur Apache Tomcat


La dernière étape d’une application est son déploiement. Nous présentons dans ce paragraphe le
déploiement sur Apache Tomcat. Ce déploiement est simple puisque le compilateur prépare nativement une
application web compatible avec les conteneurs de servlets dans son dossier war. Il reste ensuite à
configurer correctement la compilation.

1. Compilation d’une application


La compilation d’une application GWT avec Eclipse est simple puisque nous disposons comme pour les
autres étapes d’un formulaire reprenant les points importants.

Sélectionner le projet à compiler.

Clic droit sur ce projet, puis Google - GWT Compile.

Sélectionner le module point d’entrée à compiler (en général, il n’y en a qu’un dans une application).

Cliquer sur Compile.

Le compilateur transformera le code Java du paquetage client en permutations JavaScript correspondant


aux différentes cibles de l’application. Le code server sera compilé en bytecode et utilisé par le conteneur
de servlets.

a. Options de sorties

Deux paramètres principaux, présents sur le formulaire de compilation proposés par Eclipse, sont à
prendre en compte lors de la compilation.

Log level

Le paramètre log level permet de définir le niveau de journalisation du compilateur lors de la


compilation. En règle générale, il n’est pas nécessaire d’avoir des logs très précis sauf pour savoir
exactement comment le compilateur se comporte sur certaines classes lors de la compilation.

Par défaut, le compilateur présente dans la console les informations suivantes :

Compiling module com.exemple.projet.LivreGWT


Compiling 6 permutations
Compiling permutation 0...
Compiling permutation 1...
Compiling permutation 2...
Compiling permutation 3...
Compiling permutation 4...
Compiling permutation 5...
Compile of permutations succeeded
Linking into workspace\LivreGWT\war\livregwt.
Link succeeded
Compilation succeeded - 19,190s

Comme toute compilation, elle se décompose en deux parties : la compilation du code et l’édition des
liens. Ce niveau de journalisation (le plus faible) nous permet de savoir combien de permutations sont
produites.

Des niveaux de journalisation plus élevés permettent d’avoir davantage d’informations. Par exemple, le
niveau Trace permet de retourner des informations plus détaillées sur la compilation :

Computing all possible rebind results for


’com.exemple.projet.client.clientbundle.AppBundle’
Rebinding com.exemple.projet.client.clientbundle.AppBundle
Invoking com.google.gwt.dev.javac.StandardGeneratorContext@1f71a09
Preparing method add
Adding image ’add’
Preparing method alert
Adding image ’alert’

Dans cet exemple, le compilateur prépare un ClientBundle (cf. chapitre Techniques avancées -
Ressources).

1 sur 3 16/05/2011 10:57


http://www.mediapluspro.com/mediaplus66/client_net/mediabook/med...

De même, l’édition de lien sera plus détaillée :

Linking into workspace\LivreGWT\war\livregwt.


Permutation 0 (strong name 411AEB3C8A3924AFF0521059C0E58DDE)µ
has an initial download size of 36568 and total script
size of 36568
Permutation 1 (strong name ABC44B1D7E3D8FB90BA905359382D563)
has an initial download size of 36639 and total script
size of 36639
Permutation 2 (strong name E08DFF61527BE80A85AF42D9E41A14F7)
has an initial download size of 43589 and total script
size of 43589
Permutation 3 (strong name 090DB66768F97276D7A10112097F7CB4)
has an initial download size of 39456 and total script
size of 39456
Permutation 4 (strong name C10248E9BFA28060CF725FF6DE0B40D1)
has an initial download size of 35808 and total script
size of 35808
Permutation 5 (strong name 59828941627FB331D09E3560FA6EC170)
has an initial download size of 37490 and total script
size of 37490
Invoking Linker RPC policy file manifest
Invoking Linker Standard
Invoking Linker Export CompilationResult symbol maps
Invoking Linker Emit compile report artifacts
Linking compilation into workspace\LivreGWT\war\livregwt
Link succeeded

Sur cette configuration, nous avons le nom des permutations (strong name) et la taille de chacune
d’elles. De plus, nous voyons que l’éditeur de lien Standard est utilisé. Il existe plusieurs éditeurs de lien
fournis avec GWT mais le sujet ne sera pas abordé dans cet ouvrage.

Output style

Le second paramètre est le type de code JavaScript à produire. Nous pouvons définir :

obfuscated

pretty

detailed

Le principe est de permettre de fournir une permutation JavaScript sous une forme différente suivant les
besoins : cela peut être un code JavaScript lisible par le développeur (detailed), mais volumineux et à
l’opposé, un code JavaScript très compressé et illisible (obfuscated), beaucoup moins volumineux.

Une compilation detailed peut être utilisée par le développeur pour tracer d’éventuelles erreurs
JavaScript, comprendre le travail effectué par le compilateur, etc.

Une compilation obfuscated est destinée à être mise en production. En effet, elle assure une certaine
confidentialité des procédés et un besoin en ressource diminué.

Exemple de différence de compilation

Soit la fonction maMethode suivante :

public String maMethode(int count){


String chaine = "methode";
for(int i=0; i<count; i++)
chaine = chaine.concat(" maMethode"+i);
return chaine;
}

La compilation en mode detailed, de celle-ci donne :

function
com_exemple_test_client_Test_$maMethode__Lcom_exemple_test_client_
Test_2ILjava_lang_String_2(count){
var chaine, i;
chaine = $intern_0;
for (i = 0; i < count; ++i)
chaine = chaine + $intern_1 + i;
return chaine;

2 sur 3 16/05/2011 10:57


http://www.mediapluspro.com/mediaplus66/client_net/mediabook/med...

Ce code généré reste tout à fait lisible et au final assez proche de la version Java. La compilation en
mode obfuscated donne :

function u(a){var b,c;b=oe;for(c=0;c<a;++c)b=b+pe+c;return b}

Les symboles oe, pe, etc. sont définis par ailleurs dans la permutation. Ici, le code est très restreint en
nombre de caractères et illisible.

b. Structure du dossier war

L’application prête à être déployée est disponible dans le dossier war après compilation. Celui-ci contient
les éléments suivants :

La page hôte (LivreGWT.html).

La feuille de style CSS (LivreGWT.css).

L’application GWT compilée (dossier livregwt) contenant les permutations JavaScript et le


chargeur (livregwt.nocache.js).

L’application serveur (dans le cas d’une application Java/Tomcat) dans le dossier WEB-INF.
Celui-ci inclut le descripteur de déploiement web.xml, les bibliothèques utilisées (WEB-INF/lib)
et les classes compilées (WEB-INF/classes).

Ce dossier war constitue l’application prête au déploiement.

2. Déploiement de l’application
Après compilation, le déploiement de l’application s’effectue par la copie du dossier war/ dans un dossier
du répertoire des applications web du conteneur de servlet. Le nom du dossier est libre.

Pour Tomcat, nous pouvons déployer l’application LivreGWT en copiant le contenu du répertoire war dans
le dossier tomcat-base/webapps/MonApplication/. L’application est alors disponible à l’URL
http://localhost:8080/MonApplication/.

3. Import des bibliothèques externes


Dans le cas d’une application Java/Tomcat, il est nécessaire d’importer le Jar gwt-servlet.jar dans
l’application. Par défaut, ce Jar est inclus dans le dossier WEB-INF/lib. Ainsi, lors de la copie du dossier
war dans le conteneur de servlet, il sera aussi copié.

Si plusieurs applications utilisent la même version de GWT, il est possible de factoriser ce Jar en le copiant
dans le dossier des bibliothèques partagées du conteneur de servlet (lib/ pour Tomcat) : il sera alors
disponible pour toutes les applications et sa présence dans WEB-INF/lib ne sera plus nécessaire.

Enfin, s’il faut d’autres bibliothèques Jar, il est possible de les copier :

dans WEB-INF/lib et dans ce cas son utilisation sera propre à l’application,

ou dans le dossier des bibliothèques partagées si plusieurs applications en ont besoin.

3 sur 3 16/05/2011 10:57

You might also like