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
Merci d'avanceCode:<Context path="/path" docBase="C:\Repertoire\SousRep" debug="0"/>
Version imprimable
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
Merci d'avanceCode:<Context path="/path" docBase="C:\Repertoire\SousRep" debug="0"/>
As-tu essayé ?Code:
1
2
3 Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); String docBase = envCtx.getDocbase();
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??
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.Citation:
a mon avis le plus simple c d'utiliser le moyen que TOMCAT met en oeuvre pour lire ce Server.xml au demarrage
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)
et ca marche.Code:
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("\\","\\\\"); } } }
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.
pas con... mais du coup ça t'oblige à rajouter une variable pour connaitre le chemin d'acces au fichier server.xml.
Code:
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; }
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:<Context path="/path1" docBase="Appli.war" debug="0"/>
Et l'appli principale est le /PATH1Code:<Context path="/path2" docBase="C:\Repertoire2\SousRep" debug="0"/>
Et c'est dans cette appli PATH1 que je veux connaitre le docBase de la PATH2.
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+
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+