Lire le manifest d'une webapp
Bonjour à tous,
je développe une application client serveur Java déployé sous Tomcat. J'aimerais côté client, lire le manifest côté serveur pour afficher le n° de version du projet.
Sous Tomcat_HOME/webapp/mawebapp, j'ai un fichier MANIFEST.MF sous META-INF et j'essaie d'y accéder de la sorte :
http://localhost:8080/mawebapp/META-INF/MANIFEST.MF.
Mais le fichier est inaccessible. Comment le rendre accessible ?
Merci d'avance
Lire le manifest d'une webapp
Ok merci, effectivement ça marche. J'ai fait ça à l'ancienne. Je suis à la recherche de 2 améliorations:
- Ma servlet est initialisé au démarrage pour afficher le message, comment la détruire dans la foulée ?
- le chemin d'accès au fichier est exprimé à partir du TOMCAT_HOME/bin... comment l'exprimer à partir du répertoire racine de la webapp (par exemple: getServletContext...) ?
Voici ma webapp à l'init:
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 27
|
public void init(ServletConfig config) {
String file;
try {
super.init(config);
file = getInitParameter("manifest");
printManifest(file);
} catch (Exception e) {
log.error("Error while reading parameter", e);
}
}
private void printManifest(String manifest) {
try {
File f = new File(manifest);
Manifest mf = new Manifest(new FileInputStream(f));
Attributes atrs = mf.getMainAttributes();
java.util.Set<Object> keys = atrs.keySet();
Iterator<Object> itAtr = keys.iterator();
while (itAtr.hasNext()) {
Object key = itAtr.next();
log.info("\t[" + key + "=" + atrs.getValue(key.toString()) + "]");
}
} catch (Exception e) {
log.error("Error while reading date in manifest", e);
}
} |
et mon fichier web.xml
Code:
1 2 3 4 5 6 7 8 9 10
|
<servlet>
<servlet-name>manifest_read</servlet-name>
<servlet-class>fr.dcn.sice.base.ReadManifestServlet</servlet-class>
<init-param>
<param-name>manifest</param-name>
<param-value>../webapps/mawebapp/META-INF/MANIFEST.MF</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> |
Lire le manifest d'une webapp
Parce que ça retourne null...
Code:
1 2 3
|
getServletContext().getResourceAsStream("META-INF/MANIFEST.MF")
getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF") |
Lire le manifest d'une webapp
Enfin de compte ça marche en déployant le war (mais pas sous Eclipse)... pas trop le temps de chercher à comprendre, ça me convient comme ça. Merci pour ton aide.