« 2008-12 | Page d'accueil | 2009-03 »

06/01/2009

Déployer un WAR avec Tomcat

Maintenant que le fichier d'archive 'war' est prêt, il va pouvoir être déployé. Le serveur utilisé ici, est Tomcat.

Prérequis:

  • base de données mysql de l'application
  • Pouvoir démarrer le serveur mysql contenant la database de l'application
  • Pouvoir démarrer le serveur Tomcat (manuellement, service, ou Eclipse)

Le fichier de contexte contient le paramétrage du déploiement de l'application. Il joue donc un rôle important ! Il doit être placé dans le répertoire 'rep_Tomcat/conf/Catalina/localhost'. Il permet de préciser ou se trouvent les fichiers de l'application. Il peut également contenir des paramétrages divers appelés par l'application. Mais surtout, et c'est très important, il contient les ressources associées.
Dans notre cas, il faut configurer la connection à la base mysql dans le fichier de contexte:

  • nom de la base
  • port d'accès à la base
  • utilisateur / mot de passe de connexion
  • driver mysql

Ex de contenu de fichier de contexte:

<Context path="mon_appli" reloadable="true" workDir="work" >

<!-- Application parameters -->   
<Parameter name="application_name" value="mon_appli" override="false"/>
<Parameter name="database_name" value="MYSQL" override="false"/>
<Parameter name="mon_param" value="ma_valeur" override="false"/>
<Parameter name="debug_mode" value="false" override="false"/>

<!-- JDBC ressource -->
<Resource name="jdbc/mon_appli" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"  username="root"
password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/nom_database?jdbcCompliantTruncation=false" />

</Context>

Avant de déployer l'archive WAR, il est impératif de vérifier que dans le fichier 'rep_Tomcat/conf/server.xml', au niveau de la balise 'host', l'attribut 'autoDeploy' a bien pour valeur 'true'. On peut ensuite copier le fichier war dans le répertoire 'rep_Tomcat/webapps'. Au prochain démarrage du serveur Tomcat, le war sera décompressé automatiquement dans le répertoire 'webapps'.

La connection à l'application se fait avec l'url 'http://localhost:8080/nom_fichier_war/index.htm'

 

Auteur: Euan MATEO

05/01/2009

Créer un 'war' avec Eclipse et Ant

Dans la note précédente, il a été vu que l'on peut créer une archive 'jar' à partir d'un fichier de description 'jardesc' avec Eclipse. L'archive 'jar est utilisée pour exécuter une application JAVA sur une machine virtuelle JAVA (commande java sous DOS).

Dans le cas du déploiement d'une application 'web' JAVA, il convient d'exporter le projet Eclipse sous forme de WAR ( Web ARchive). L'archive peut ensuite être copiée dans le répertoire de déploiement d'un serveur Java. Dans le cas présent, la finalité sera de copier l'archive WAR dans le répertoire 'webapps' d'un serveur Tomcat.

Le format 'war' est en fait un 'jar' qui doit contenir un répertoire "WEB-INF" qui lui-même contient:

  • un descripteur de déploiement 'web.xml'
  • un répertoire 'classes' où sont placés les '.class' du code compilé
  • un répertoire 'lib' où se trouvent les librairies externes 'jar'

L'archive 'WAR' peut être générée à l'aide d'ANT. Il existe en effet une tâche ANT dédiée à cette opération. Le nom de cette tâche est 'war'. L'attribut 'destfile' permet de préciser le nom de l'archive war à créer. Et l'attribut 'webxml' permet de spécifier le nom du fichier web.xml à utiliser pour déployer l'application web.

Pour constituer le contenu de l'archive on utilise divers tags:

  • <classes> pour préciser où se trouvent le code compilé '.class'
  • <lib> pour les libraires '.jar' externes
  • <zipfileset> pour grouper des fichiers et des répertoires (dont on peut exclure des éléments)

Exemple de cible ANT pour la génération d'un WAR:

<property name="jsp.dir" value="WEB-INF/jsp" />   
<property name="css.dir" value="stylesheet" />   
<property name="xsl.dir" value="WEB-INF/stylesheet" />       
<property name="xml.dir" value="WEB-INF/xml" />   
<property name="tld.dir" value="WEB-INF/tld" />   
<property name="scripts.dir" value="scripts" />
<property name="onlineHelp.dir" value="help" />       
<property name="images.dir" value="images" />   

<target name="War">
<description>
Creates a War file to deploy on Tomcat 
</description>
<echo message="Creation du War" />

<war destfile="rep_destination/mon_appli.war" webxml="WEB-INF/web.xml">    
<classes dir="WEB-INF/classes"/>       
<lib dir="WEB-INF/lib" />
<fileset dir=".">
<include name="*.jsp" />
<include name="*.html" />
<include name="*.htm" />
</fileset>
<zipfileset dir="${jsp.dir}" prefix="WEB-INF/jsp" />                   
<zipfileset dir="${scripts.dir}" prefix="scripts" />
<zipfileset dir="${onlineHelp.dir}" prefix="help" />
<zipfileset dir="${images.dir}" prefix="images" />         
<zipfileset dir="${css.dir}" prefix="stylesheet" />   
<zipfileset dir="${tld.dir}" prefix="WEB-INF/tld" >
<exclude name="CVS" />             
</zipfileset>         
<zipfileset dir="${xsl.dir}" prefix="WEB-INF/stylesheet" />
<zipfileset dir="${xml.dir}" prefix="WEB-INF/xml" />         
</war>
</target>

 

Ressources:

Auteur: Euan MATEO