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 ] access valeur Docbase server.xml


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Par défaut [ Tomcat ] access valeur Docbase server.xml
    Bjr,

    Quel est le moyen le plus simple d'accès à la valeur du tag docBase dans le fichier server.xml de Tomcat 4.1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Context path="/path" docBase="C:\Repertoire\SousRep" debug="0"/>
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    As-tu essayé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    String docBase = envCtx.getDocbase();

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Par défaut
    slt,

    Merci pour ta reponse,

    Mais ca ne marche pas car "envCtx" ne possède pas la methode getDocBase().

    En fait, a mon avis le plus simple c d'utiliser le moyen que TOMCAT met en oeuvre pour lire ce Server.xml au demarrage. Mais je trouve pas pour l'instant.

    Quelqu'un a une idée??

  4. #4
    Membre éprouvé Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Par défaut
    a mon avis le plus simple c d'utiliser le moyen que TOMCAT met en oeuvre pour lire ce Server.xml au demarrage
    et bien pour voir ça tu peux télécharger les sources de tomcat. J'ai essayé parce que je voulais faire exactement la même chose que toi mais je te garantis que c'est pas simple. Puis finalement étant pris par le temps j'ai fini par opté pour une solution "caca" : mettre l'information dans un fichier de propriété. Mais si tu trouves fais nous en part ça m'interesse grandement.

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Par défaut
    la solution etait en fait de parser le fichier server.xml de TOMCAT et d'y retrouver la valeur recherchée.

    Dans mon cas (pressé par le temps), j'ai opté pour la solution suivante (DOM)

    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
    import org.apache.xerces.parsers.*;
    import org.w3c.dom.*;
     
     
        DOMParser parser = new DOMParser();
        String UrlServer="C:\\Program Files\\Apache Group\\Tomcat 4.1\\conf\\server.xml";
        parser.parse(UrlServer);
        Document TheDocument = parser.getDocument();
        Element root = (Element) TheDocument.getDocumentElement();
        NodeList nodelist=root.getElementsByTagName("Context");
        Node node=null;
        for (int i=0;i < nodelist.getLength();i++){
     
          node=nodelist.item(i);
          if (node.hasAttributes()) {
            String path=node.getAttributes().getNamedItem("path").
                               getNodeValue();
            if(path.compareToIgnoreCase("/nomdupath")==0){
              baseRepertoire=node.getAttributes().getNamedItem("docBase").
                               getNodeValue();
              baseRepertoire=baseRepertoire.replaceAll("\\","\\\\");
            }
          }
     
     
        }
    et ca marche.

    Mais bon, je trouve que l'URLserver devrait etre parametrable (fichier properties) et qu'il parait que Xpath est plus facile à utiliser (pas le tps de voir).

    Merci à tous.

  6. #6
    Membre éprouvé Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Par défaut
    pas con... mais du coup ça t'oblige à rajouter une variable pour connaitre le chemin d'acces au fichier server.xml.

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected String getAbsoluteDocBase(Context context)
        {
    	// Calculate the absolute path of the document base
    	String docBase = context.getServletContext().getRealPath("/");
    	docBase = docBase.substring(0,docBase.length()-1);
    	if (!isAbsolute(docBase)){
    	    docBase = tomcatHome + "/" + docBase;
    	}
    	docBase = patch(docBase);
            return docBase;
        }

  8. #8
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Par défaut
    je ne sais pas si la solution de RandomX peut fonctionner ds mon cas.

    En effet j'utilise 2 context ds mon appli (contraintes)

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Context path="/path1" docBase="Appli.war" debug="0"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Context path="/path2" docBase="C:\Repertoire2\SousRep" debug="0"/>
    Et l'appli principale est le /PATH1
    Et c'est dans cette appli PATH1 que je veux connaitre le docBase de la PATH2.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 46
    Par défaut
    Tu n'as pas regardé la bonne classe Context....
    Regardes ici

    C'est de la classe org.apache.tomcat.core.Context dont je parlais...
    Qui a bien sa méthode getDocbase()

    A+

  10. #10
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Par défaut
    merci Jef pour cette précision bien utile .

    Si j'ai le tps, je vais voir la solution en utilisant
    la classe org.apache.tomcat.core.Context

    et je reposterai les resultats.

    Merci et a+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/11/2014, 22h14
  2. Tomcat et le fichier server.xml
    Par riadhhwajdii dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 10/02/2011, 01h05
  3. [Tomcat 4.1] Configuration server.xml
    Par Lémur dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 08/07/2008, 10h27
  4. [Tomcat] Paramètres dans le server.xml
    Par JFDelges dans le forum Tomcat et TomEE
    Réponses: 14
    Dernier message: 22/03/2006, 12h16
  5. [Tomcat 4 VS 5] différence dans server.xml
    Par pmartin8 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 13/10/2005, 14h53

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