Fiches / Articles

Cadre Fonctionnel

Déploiement d’une servlet

Cadre Technique

Tomcat

Identifiant 

DEP_SERVLET_01

Référent technique 


Version 

1.0

Auteur 

Alexandre Brillant

Date

04/01

Source

http://jakarta.apache.org

Dépendance

INS_SERVLET_01, INS_ANT_01

Cible

SYS_SERVLET_01, SYS_ANT_01

Descripteur de déploiement

Il faut disposer d’un fichier de déploiement web.xml :


<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

    <display-name>hexadevServlet</display-name>
    <description>
     Exemple de servlet
    </description>
    <servlet>

        <servlet-name>hexadevServlet</servlet-name>
        <servlet-class>hexadev.HexadevServlet</servlet-class>

        <init-param>
            <param-name>message</param-name>
            <param-value>Message de Test</param-value>
        </init-param>
    </servlet>

</web-app>

Chaque servlet doit être décrite dans un tag servlet différent. Le tag servlet-name contient le nom en exploitation de la servlet tandis que servlet-class fait référence à l’identification java de la servlet. Le tag init-param contient les paramètres d’initialisation que la servlet recevra dans la méthode init avec l’objet ServletConfig.

Deux méthodes existent pour exploiter une servlet :

Création d’un répertoire pour web-apps

  1. Créer un répertoire représentant le domaine d’exécution de votre servlet (par exemple hexadev).

  2. Créer dans ce répertoire, un répertoire WEB-INF contenant à la racine le fichier correctement modifié web.xml

  3. Copier les classes représentant les servlets dans le répertoire WEB-INF/classes et les librairies annexes dans le répertoire WEB-INF/lib.

  4. Exécuter tomcat et tester vos servlets (par exemple http://localhost :8080/hexadev/servlet/ hexadevServlet).


Création d’un war

Un war répresente un jar du répertoire créé dans web-apps. Il facilite le déploiement de servlet en contenant aussi toutes les autres ressources comme les pages HTML, Les script JSP…

On peut le créer par la commande jar cvf fichier.war répertoire.

Script ant pour la compilation et le déploiement


<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Exemple de compilation de servlet à partir de ANT -->

<project name="servlet" default="compile"
basedir=".">

<property name="src" value="src"/>
<property name="bin" value="classes"/>
<property name="web" value="web"/>
<path id="project.class.path">
<pathelement location="D:\jakarta-tomcat\lib\servlet.jar"/>

</path>

<target name="init">
<mkdir dir="${bin}"/>
</target>

<!-- compilation -->

<target name="compile" depends="init">
 <javac srcdir="${src}" destdir="${bin}">
  <classpath refid="project.class.path"/>
 </javac>

</target>

<!-- construction d'un war -->

<target name="deploy" depends="compile">
<mkdir dir="${web}/WEB-INF/classes"/>

 <copy todir="${web}/WEB-INF/classes">
  <fileset dir="${bin}"/>
 </copy>

 <copy file="web.xml" todir="${web}/WEB-INF"/>

 <jar jarfile="web.war"
      basedir="${web}"/>
</target>

</project>

Cet exemple s’attend à trouver les sources des servlets dans le répertoire courant src. L’action ‘compile’ créé un répertoire classes et compile les classes du répertoire src en spécifiant la librairies du jsdk servlet.jar.

L’action ‘deploy’ construit un répertoire web, copie le fichier web.xml et les classes des servlets et construit un fichier war.

Il ne reste plus qu’à copier le war dans le répertoire webapps. Si un autre répertoire doit être utilisé, il faut modifier le fichier %TOMCAT_HOME%\conf\server.xml et ajouter dans la balise ContextManager une balise Connector par exemple :


<contextManager… >

…

<context path= "" docbase="mon path"
debug="0" reloadable=""true"/>

</contextManager>