Configuration des datasources en hosted mode avec GWT 1.6

La migration de GWT de la version 1.5 à la version 1.6 s’est accompagnée de changements en profondeur au niveau du hosted mode. En effet, celui-ci utilisait précédemment une version embarquée du serveur tomcat, qui a été remplacée dans la dernière version par jetty.

Ce changement a donc entraîné une restructuration au niveau de la configuration des projets et notamment de la déclaration des datasources *. Cet article va donc présenter la configuration des datasources en hosted mode avec GWT 1.6.

La première étape est de rajouter les jar jetty-naming-6.1.11.jar et jetty-plus-6.1.11.jar à notre projet. Ceux-ci permettront d’utiliser notre propre fichier de configuration de jetty. Si comme nous vous utilisez Maven pour gérer les dépendances de votre projet, rajoutez les deux entrées suivants à votre pom.xml :

[pastacode lang=”markup” message=”” highlight=”” provider=”manual” manual=”%3Cdependency%3E%0A%3Cgroupid%3Eorg.mortbay.jetty%3C%2Fgroupid%3E%0A%3Cartifactid%3Ejetty-naming%3C%2Fartifactid%3E%0A%3Cversion%3E6.1.11%3C%2Fversion%3E%0A%3C%2Fdependency%3E%0A%3Cdependency%3E%0A%3Cgroupid%3Eorg.mortbay.jetty%3C%2Fgroupid%3E%0A%3Cartifactid%3Ejetty-plus%3C%2Fartifactid%3E%0A%3Cversion%3E6.1.11%3C%2Fversion%3E%0A%3C%2Fdependency%3E”/]

Sinon, vous trouverez ces jars sur le site de jetty.
Il faut maintenant crée un fichier nommé jetty-web.xml qui contiendra la déclaration de nos datasources sous la forme suivante :

[pastacode lang=”markup” message=”” highlight=”” provider=”manual” manual=”%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3C!DOCTYPE%20Configure%20PUBLIC%20%22-%2F%2FMort%20Bay%20Consulting%2F%2FDTD%20Configure%2F%2FEN%22%20%22http%3A%2F%2Fjetty.mortbay.org%2Fconfigure.dtd%22%3E%0A%3CConfigure%3E%0A%3CNew%20id%3D%22dataset1%22%3E%0A%3CArg%3Ejava%3Acomp%2Fenv%2Fjdbc%2Fdataset1%3C%2FArg%3E%20%3CArg%3E%0A%3CNew%3E%0A%3CSet%20name%3D%22Url%22%3Ejdbc%3Amysql%3A%2F%2Flocalhost%3A3306%2Fdatabase1%3FautoReconnect%3Dtrue%3C%2FSet%3E%0A%3CSet%20name%3D%22User%22%3Eusername1%3C%2FSet%3E%0A%3CSet%20name%3D%22Password%22%3Epassword1%3C%2FSet%3E%0A%3C%2FNew%3E%0A%3C%2FArg%3E%0A%3C%2FNew%3E%0A%3CNew%20id%3D%22dataset2%22%3E%0A%3CArg%3Ejava%3Acomp%2Fenv%2Fjdbc%2Fdataset2%3C%2FArg%3E%0A%3CArg%3E%0A%3CNew%3E%0A%3CSet%20name%3D%22Url%22%3Ejdbc%3Amysql%3A%2F%2Flocalhost%3A3306%2Fdatabase2%3FautoReconnect%3Dtrue%3C%2FSet%3E%0A%3CSet%20name%3D%22User%22%3Eusername2%3C%2FSet%3E%0A%3CSet%20name%3D%22Password%22%3Epassword2%3C%2FSet%3E%0A%3C%2FNew%3E%0A%3C%2FArg%3E%0A%3C%2FNew%3E%0A%3C%2FConfigure%3E”/]

C’est cette configuration qui va indiquer à quelle base de donnée correspond chacun des datasets, et les paramètres de connexion. Dans cette exemple, nous déclarons deux datasets qui utilisent les bases de donnée MySql database1 et database2 du serveur local.
Il faut ensuite référencer les datasources dans le web.xml pour que notre application soit en mesure de les utiliser :

[pastacode lang=”markup” message=”” highlight=”” provider=”manual” manual=”%3Cres-ref-name%3Ejava%3Acomp%2Fenv%2Fjdbc%2Fdataset1%3C%2Fres-ref-name%3E%0A%3Cres-type%3Ejavax.sql.DataSource%3C%2Fres-type%3E%0A%3Cres-auth%3EContainer%3C%2Fres-auth%3E%0A%3C%2Fresource-ref%3E%0A%3Cresource-ref%3E%0A%3Cres-ref-name%3Ejava%3Acomp%2Fenv%2Fjdbc%2Fdataset2%3C%2Fres-ref-name%3E%0A%3Cres-type%3Ejavax.sql.DataSource%3C%2Fres-type%3E%0A%3Cres-auth%3EContainer%3C%2Fres-auth%3E%0A%3C%2Fresource-ref%3E”/]

Une fois cette étape réalisée, vous pouvez utiliser vos datasets au sein de votre application comme vous le feriez normalement :

[pastacode lang=”java” message=”” highlight=”” provider=”manual” manual=”DataSource%20source%20%3D%20(DataSource)ctx.lookup(%22java%3Acomp%2Fenv%2Fjdbc%2Fdataset2%22)%3B%0AConnection%20connection%20%3D%20source.getConnection()%3B%0A%2F%2F…”/]