IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[JSP] pré compilation


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut [résolu][JSP] pré compilation
    QQun a t-il deja utiliséun script ANT qui permette de pré compiler les jsp.

    Pasque celui de jakarta je comprends pas trop ce qu'il fait ...

    Merci d'avance...

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 229
    Par défaut
    Non, tu ne peux le faire que à travers un serveur tel que Tomcat...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    Citation Envoyé par hocinema
    Non, tu ne peux le faire que à travers un serveur tel que Tomcat...
    Bon j'ai peut etrre pas été assez précis mais effectivement j'utilise un serveru tomcat pour faire tourner mon appli mais je sais que l'on peut précompiler les JSP afin de ne pas avoir à le faire lorsque l'on met l'application en production (ceci evite tous les soucis de lenteur liés à la compilation).

    On peut le faire car il y a un script ANT sur Jakarta simplement je pige pas comment ça marche...

  4. #4
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Tes JSP ne seronts compilé que la premiere fois ou elles seront appellées. Ensuite elle s ne le sont plus tant que tu recharge pas le contexte ou que tu ne modifie pas les pages.


    @+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 57
    Par défaut
    Tout à fait,
    A chaque appel d'un jsp, le serveur d'application verifi si la version servlet qu'il possede corespond à la version de la jsp. Si celle ci à ete modifiée entre temps, il l'a recompile (transforme) en servlet... Dans le cas contraire, pas de recompilation.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    Je sais ça!
    Mais lorsque ke je fais une maj complete d'une appli c un peu lourd pour les users d'attendre ke les JSP se recompilent

    Mais normalement en production un serveur tomcat ne doit pas perdre son temps à faire cette verifiation de Jsp modifié ou non. On désactive le mod compilation des JSP, on les pré compile tous et pas et soucis.

    Pour preuve : (choppé sur jakarta)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    Using Ant is the preferred way to compile web applications using JSPC. Use the script given below to precompile a webapp: 
     
     
     
     <project name="Webapp Precompilation" default="all" basedir="."> 
     
      <target name="jspc"> 
     
        <taskdef classname="org.apache.jasper.JspC" name="jasper2" > 
          <classpath id="jspc.classpath"> 
            <pathelement location="${java.home}/../lib/tools.jar"/> 
            <fileset dir="${tomcat.home}/server/lib"> 
              <include name="*.jar"/> 
            </fileset> 
            <fileset dir="${tomcat.home}/common/lib"> 
              <include name="*.jar"/> 
            </fileset> 
          </classpath> 
        </taskdef> 
     
        <jasper2 
                 validateXml="false" 
                 uriroot="${webapp.path}" 
                 webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 
                 outputDir="${webapp.path}/WEB-INF/src" /> 
     
      </target> 
     
      <target name="compile">
     
        <mkdir dir="${webapp.path}/WEB-INF/classes"/>
        <mkdir dir="${webapp.path}/WEB-INF/lib"/>
     
        <javac destdir="${webapp.path}/WEB-INF/classes"
               optimize="off"
               debug="on" failonerror="false"
               srcdir="${webapp.path}/WEB-INF/src" 
    	   excludes="**/*.smap">
          <classpath>
            <pathelement location="${webapp.path}/WEB-INF/classes"/>
            <fileset dir="${webapp.path}/WEB-INF/lib">
              <include name="*.jar"/>
            </fileset>
            <pathelement location="${tomcat.home}/common/classes"/>
            <fileset dir="${tomcat.home}/common/lib">
              <include name="*.jar"/>
            </fileset>
            <pathelement location="${tomcat.home}/shared/classes"/>
            <fileset dir="${tomcat.home}/shared/lib">
              <include name="*.jar"/>
            </fileset>
          </classpath>
          <include name="**" />
          <exclude name="tags/**" />
        </javac>
     
      </target>
     
      <target name="all" depends="jspc,compile">
      </target>
     
    </project>
     
     
     
     
     
    The following command line can be used to run the script (replacing the tokens with the Tomcat base path and the path to the webapp which should be precompiled):
     
     
     
     $ANT_HOME/ant -Dtomcat.home=<$TOMCAT_HOME> -Dwebapp.path=<$WEBAPP_PATH>
     
     
     
     
     
    Then, the declarations and mappings for the servlets which were generated during the precompilation must be added to the web application deployment descriptor. Insert the ${webapp.path}/WEB-INF/generated_web.xml at the right place inside the ${webapp.path}/WEB-INF/web.xml file. Restart the web application (using the manager) and test it to verify it is running fine with precompiled servlets. An appropriate token placed in the web application deployment descriptor may also be used to automatically insert the generated servlet declarations and mappings using Ant filtering capabilities. This is actually how all the webapps distributed with Tomcat are automatically compiled as part of the build process.
    Je vais essayer de me plonger à fond dans cette affaire et je vous tiens au courant

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 57
    Par défaut
    Oui, c tres interessant :-)
    Des que j'ai un moment je jeterai un coup d oeil aussi

  8. #8
    Membre expérimenté
    Avatar de knotty
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Par défaut
    J'ai essaye jspc un coup, ca fonctionnait bien, mais j'ai eu du mal a configurer les references, c'est a dire qu'il recompilait les jsp a chaque fois que je lui demandait. Je n'ai pas approfondi plus que ca, mais la config est un poil compliquee car tu dois d'abord transformer en .java, puis en .class.

    Avec un brin de patience (et de google), ca doit se faire.

    Si tu as un bel example de build.xml, publie-le, je serais interesse.

    Sans ca, beaucoup d'IDE font ca automatiquement, mais bien sur, ce n'est pas ton probleme.

    Bon courage.
    Christophe Ludet
    Testez vos connaissances Java - http://knotty.developpez.com
    Donner des ailes a votre application (J2EE patterns) - http://knotty.developpez.com/j2ee

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    en IDE j'utilise eclipse et je crois pas savoir k'il fasse ça ...
    à moins ke j'ai mal regardé...

    Sinon j'arrive à generer les .java avec jspc

    Pour ce ki est de la compile j'ai encore moult erreurs... je teste...

    apres va falloir ke j'indique à tomcat ou aller chercher les jsp compilés (par défaut dans work)

    je continue.. :)

  10. #10
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Surtout tient nous bien au courant car je pense que ca interresse bcp de gens !!!

    Je jette un oeil desus de mon coté

    @+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    bon ça compile

    mais j'ai un truc bizard ça met tout mes Jsp à la racine de org\apache\jsp.

    Mon arboresence n'est plus respectée

    Mainteant je cherche à indiquer à tomcat ou sont mes servlets...

    je poursuis...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    bon pour ceux ke ça interresse ça compile

    un fichier XML est genéré pour faire le mapping entre les chemain des jsp et les servlets générées.
    Le contenu de ce fichier est à copier dans le web.xml de la web-app.

    pour ma part j'ai reussi à lancer mes servlets (ouf!)

    Mais il me reste deux gros soucis :
    - Dans mes servlet genérée avec JSPC (.java), lorsque j'ai les caractères : 'é' ou 'è' , j'ai des vieux caractère de merde ki sont à la place. Je pense à un soucis d'encodage mais je sais pas comment faire.
    - Toutes les servlets compilées atterissent dans le même dossier ce qui fait ke si j'ai l'arboresence suivante :
    myapp/index.jsp
    myapp/subdir/index.jsp
    une seule servlet sera générée et du coup mon mapping dans le web.xml devient foireur et rien ne se lance

    Si kkun a des solutions... paske là je sèche...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    pour ce qui est de l'encodage c bon!
    Il suffit de préciser à la compilation que l'on encode en UTF-8

    reste le probleme délicat des JSP portant le mee nom deans des dossier différents

  14. #14
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Tu as regardé du coté de uriroot et uribase ??

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    c'est bon tout fonctionne!
    J'annonce k'il faut le dernier Tomcat (4.1.27) et le dernier ANT (1.5.4)
    Il ne faut pas se fier aux docs en ligne, elle ne sont pas à jour...

    Bon c un peu le bordel dans mon script

    Je vais mettre tout ça en forme et je vous en post un commenté!

    Content d'avoir trouvé :)

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Par défaut
    Et voilà un script ki fonctionne

    La commande jspc genere les .java et javac les compiles ensuite.
    On notera la commande pour copier le contenu du generated_web.xml dans le web.xml au moyen d'une référence.

    N'hésitez pas si vous avez des questions, je pense avoir bien dégrossi l'affaire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <!--.jsp to .java-->
      <target name="jspc">
     
      	<jspc                   
            srcdir="${web-app}/jsp/aif"
            destdir="${jsp.servgendir}"
            uriroot="${web-app}/jsp/aif" 
            failonerror="false"
            classpathref="jspc_.classpath"
            package="org.mypack.jsp"
            compiler="jasper41"
            verbose="9"
            webinc="${jsp.servgendir}/generated_web.xml">
     
    		<classpath id="jspc_.classpath"> 
            <pathelement location="${java.home}/../lib/tools.jar"/> 
            <fileset dir="${tomcat.home}/server/lib"> 
              <include name="*.jar"/> 
            </fileset> 
            <fileset dir="${tomcat.home}/common/lib"> 
              <include name="*.jar"/> 
            </fileset> 
    		</classpath>
            <exclude name="**/WEB-INF/**"/>
            <exclude name="include/**"/>
            <exclude name="tags/**" /> 
        </jspc>
     
        <!--copy file to web.xml-->
     	<loadfile property="generated_web.xml" srcFile="${jsp.servgendir}/generated_web.xml"  />
        <replace file="${web-app}/WEB-INF/${webfile}" token="@jspServletXml" value="${generated_web.xml}" />
     
      </target>
     
      <!--.jsp to .class-->
      <target name="compilejsp" depends="jspc"> 
     
    	<!--java to .class -->
        <javac destdir="${web-app}/WEB-INF/classes" 
               optimize="off" 
               debug="on" failonerror="false" 
               srcdir="${jsp.servgendir}" 
               encoding="UTF-8"
          excludes="**/*.smap"> 
          <classpath> 
            <pathelement location="${web-app}/WEB-INF/classes"/> 
     
            <pathelement location="${tomcat.home}/common/classes"/> 
            <fileset dir="${tomcat.home}/common/lib"> 
              <include name="*.jar"/> 
            </fileset> 
            <pathelement location="${tomcat.home}/shared/classes"/> 
            <fileset dir="${tomcat.home}/shared/lib"> 
              <include name="*.jar"/> 
            </fileset> 
            <fileset dir="${lib}"> 
              <include name="*.jar"/> 
            </fileset> 
          </classpath> 
          <include name="**" /> 
        </javac> 
     
      </target>

  17. #17
    Membre confirmé
    Avatar de couetbis
    Inscrit en
    Juillet 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juillet 2005
    Messages : 137
    Par défaut
    Bonjour,
    Je remonte ce post car c'est tout à fait ce que je veux faire mais j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [jasperc] org.apache.jasper.JasperException: Unrecognized option: -v9.  Use -help for help.
    J'ai essayé en enlevant l'attribut verbose mais ça revient au même
    J'utilise apache ant 1.7.0.
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] Erreur compilation : JspSourceDependent.getDependants()
    Par allizou dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 12/02/2013, 09h55
  2. Inclusion de JSP pour compilation avec plugin JSPC
    Par obalais dans le forum Maven
    Réponses: 2
    Dernier message: 10/07/2009, 10h39
  3. [JSP] Erreur Compilation
    Par tmcgrady dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/08/2007, 14h48
  4. [TOMCAT][JSP] erreur compilation
    Par kokatrix dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 28/04/2006, 10h45
  5. [ECLIPSE]Compilation des JSP
    Par partyboy dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 03/09/2003, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo