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

Tomcat et TomEE Java Discussion :

Tomcat 5.5: déploiement d'une application, config server.xml


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut Tomcat 5.5: déploiement d'une application, config server.xml
    Bonjour!

    J'ai quelques ennuis avec le déploiement de mon application (de type hello world) avec tomcat 5.5, sous WinXP.

    Je souhaite faire en sorte que mon servlet de bienvenue se lance lorsque je tape "http://localhost:8085" sans rien après.
    J'ai remarqué que la page d'accueil de gestion de tomcat fonctionnait ainsi, on y accède en tapant "http://localhost:8080", l'application se trouve dans le répertoie ROOT, ce que je ne veux pas faire pour la mienne.

    J'ai fait un fichier de déploiement test.war contenant un fichier web.xml, une servlet et un applet. Ce fichier est d'ailleurs déployé automatiquement puisque je l'ai placé dans le répertoire TOMCAT_HOME/webapps.

    J'arrive à lancer mon application en utilisant une adresse du type: http://localhost:8085/test, test correspondant au nom du war ou plutôt au répertoire qui est créée lors du déploiement (TOMCAT_HOME/webapps/test).

    Bref, comment faire pour lancer mon application sans utiliser le context test? Je ne comprends pas bien la différence entre les paramètres d'un host et ceux d'un contexte associé (en particulier docBase et path).

    Voici sur quoi je me suis basé:
    http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
    http://tomcat.apache.org/tomcat-5.5-doc/config/host.html

    Voici les définitions qui me semblent pas claires:
    Pour le context:
    docBase

    The Document Base (also known as the Context Root) directory for this web application, or the pathname to the web application archive file (if this web application is being executed directly from the WAR file). You may specify an absolute pathname for this directory or WAR file, or a pathname that is relative to the appBase directory of the owning Host.

    path

    The context path of this web application, which is matched against the beginning of each request URI to select the appropriate web application for processing. All of the context paths within a particular Host must be unique. If you specify a context path of an empty string (""), you are defining the default web application for this Host, which will process all requests not assigned to other Contexts. The value of this field must not be set except when statically defining a Context in server.xml, as it will be infered from the filenames used for either the .xml context file or the docBase.


    Pour l'host:
    appBase

    The Application Base directory for this virtual host. This is the pathname of a directory that may contain web applications to be deployed on this virtual host. You may specify an absolute pathname for this directory, or a pathname that is relative to the $CATALINA_BASE directory. See Automatic Application Deployment for more information on automatic recognition and deployment of web applications to be deployed automatically.


    En clair je n'arrive pas à faire en sorte qu'un host appelle une application précise. J'aimerais qu'en tapant http://localhost:8085 ça lance mon application test et je ne vois pas ce qui lie un host et une application.

    Quelqu'un peut m'aider?

    Merci d'avance!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    Je crois que j'ai trouvé...
    <Service name="monapp">
    <Connector port="8085" maxHttpHeaderSize="8192" maxThreads="150"
    minSpareThreads="25" maxSpareThreads="75" enableLookups="false" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />

    <Engine defaultHost="localhost" name="bienvenue">
    <Host name="localhost" appBase="webapps/MonApplication"
    unpackWARs="true" autoDeploy="true" xmlValidation="false"
    xmlNamespaceAware="false">
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log8085." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    <Context reloadable="true" path="" docBase="test" />
    </Host>
    </Engine>
    </Service>

    Avec un sous répertoire contenant le war ça semble mieux aller et un url-pattern comme ça <url-pattern>/</url-pattern> dans web.xml

  3. #3
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Points : 484
    Points
    484
    Par défaut
    appBase spécifie le chemin du dossier contenant les applications web.

    docBase est le chemin physique où sont stockés les fichiers de ton application (chemin absolue ou relatif à appBase).

    path est le chemin logique de ton application.

    Exemple:
    Si j'ai une application stocké dans c:\tomcat\webapps\monApp, et si appBase est c:\tomcat\webapps (valeur par défaut) alors path doit être monApp.
    Et par défaut appBase vaut /monApp.
    Tu peux changer les valeurs par défaut en définissant un fichier monApp.xml dans le dossier c:\tomcat\conf\catilina\localhost\monApp.xml (de memoire)
    contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <context docBase="monApp" path="/monApp" />
    Pour définir le context par défaut (celui correspondant à l'adresse http://localhost:8080) il faut définir dans le fichier server.xml le context suivant (avec le path vide):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <context docBase="/monApp" path="" />

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    C'est bien ce que j'avais fait mais ça ne fonctionne pas.

    Voici les éléments que j'avais dans mes répertoires:
    TOMCAT_HOME/webapps/test.war
    TOMCAT_HOME/webapps/test (répertoire issus de test.war)

    J'avais donc écrit ceci dans server.xml:
    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
      <Service name="monApplication">
      	 	<Connector port="8085" maxHttpHeaderSize="8192" maxThreads="150" 
    		minSpareThreads="25" maxSpareThreads="75" enableLookups="false" acceptCount="100" 
    		connectionTimeout="20000" disableUploadTimeout="true" />
     
    		<Engine defaultHost="localhost" name="bienvenue">
    			<Host name="localhost" appBase="webapps" 
    			unpackWARs="true" autoDeploy="true" xmlValidation="false" 
           		xmlNamespaceAware="false">		
           		  <Valve className="org.apache.catalina.valves.AccessLogValve"
                     directory="logs"  prefix="localhost_access_log8085." suffix=".txt"
                     pattern="common" resolveHosts="false"/>
    				<Context reloadable="true" path="" docBase="test" />
    			</Host>
    		</Engine>  
      </Service>
    Dans le fichier web.xml j'avais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <web-app> 
    	<display-name>Mon application</display-name> 
    	<servlet> 
    		<servlet-name>Bienvenue</servlet-name> 
    		<servlet-class>com.developpez.tomcat.ServletBienvenue</servlet-class> 
    	</servlet> 
    	<servlet-mapping> 
    		<servlet-name>Bienvenue</servlet-name> 
    		<url-pattern>/</url-pattern> 
    	</servlet-mapping> 
    </web-app>

    Puis j'ai essayé d'accèder en tapant: http://localhost:8085 et ça ne fonctionnait pas, pourtant mon connecteur correspond bien à 8085, le nom d'host est bien localhost, le répertoire où se trouve mes applications est bien webapps et mon application est bien dans le répertoire test de webapps...

    Je ne sais pas pourquoi ça fonctionne en utilisant un sous-répertoire contenant le war...

    Après quelques recherches je crois que j'avais dû utiliser un mauvais attribut dans server.xml parce que j'avais aussi de la doc pour tomcat 4 ou 5 et ils ont changés!

    L'exemple de ce post semble finalement fonctionner...

  5. #5
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Points : 484
    Points
    484
    Par défaut
    Chez moi ca marche.

    Je viens de faire ceci à partir d'une nouvelle installation de tomcat:
    1-copie d'un fichier war (struts-documentation.war) dans TOMCAT_HOME\webapps
    2-Lancement du serveur pour verifier le deploiement
    3-Modification du Host (fichier conf/server.xml) par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Host name="localhost" appBase="webapps"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
            <Context reloadable="true" path="" docBase="struts-documentation" />
    </Host>
    4-Arret + lancement du server => RAS
    5-Ouverture de http://localhost:8080 => Je tombe sur la doc de struts (ie le contenu du war)

    Note : Apparement, il faut que le war soit deployer avant de changer le server.xml.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    Oui en fait ça fonctionne aussi chez moi à présent, l'ennui c'est que maintenant mon applet et mes pages statiques sont plus accessibles c'est bien compliqué de faire des choses simples avec tomcat je trouve :p

    C'est logique, mon context par défaut lance mon servlet de bienvenue, donc si par exemple je veux atteindre quelque chose d'autre (applet, image, page statique) je suis automatiquement renvoyé vers mon servlet de bienvenue.

    Dans mon cas, le servlet de bienvenue renvoie une page html contenant un applet. L'applet ne se charge pas parce que le navigateur effectue une requête de type : GET http://localhost:8085/Applet/AppletBienvenue.class ça correspond à mon contexte par défaut...

    Après vérification c'est mon fichier web.xml qui pose problème, mon pattern / dérange... si je mets /bienvenue comme pattern tout va bien, sauf que j'accède à ma page de bienvenue en devant taper localhost:8085/bienvenue.

    Merci pour ton aide en tous cas!

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/03/2010, 20h05
  2. Déploiement d'une Application sous Tomcat
    Par boubafanta dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 31/01/2010, 17h14
  3. Déploiement d'une application Tomcat
    Par Bobble dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 14/10/2009, 14h56
  4. Réponses: 3
    Dernier message: 10/09/2009, 20h45

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