OVH Cloud OVH Cloud

Webapps et chemins : je ne m'en sors pas :(

10 réponses
Avatar
flipouk
Je ne m'en sors plus avec le problème suivant que je pensais être
simple, pourtant.

J'ai une webapp sous Tomcat 5.5. Elle fontionne très bien mais certaines
de ses JSP et de ses servlets ont besoin d'accéder à un fichier de
properties.

Pour accéder à ce fichier qui est dans le répertoire
.../webapps/mywebapp/resources, je le charge comme cela :
properties.load(webappHome + "/webapps/mywebapp/resources/file.prop");
webappHome est une String que j'obtiens en faisant :
String webappHome = System.getProperty("catalina.home")
(J'ai laissé tomber System.getenv("CATALINA_HOME") comme mon post
précédent le suggérait car il y avait des problèmes avec les versions de
java < 5)

Je pensais avoir résolu tous les problèmes. Maintenant ma webapp
fonctionne sur Linux, MacOSX et W2000... mais à condition que Tomcat
soit le container ! (car appel à catalina)

D'où ma question : comment déterminer des chemins pour qu'une webapp
soit vraiment portable ???

10 réponses

Avatar
Trognon Patrice
flipouk wrote:

Je ne m'en sors plus avec le problème suivant que je pensais être
simple, pourtant.

J'ai une webapp sous Tomcat 5.5. Elle fontionne très bien mais certaines
de ses JSP et de ses servlets ont besoin d'accéder à un fichier de
properties.

Pour accéder à ce fichier qui est dans le répertoire
.../webapps/mywebapp/resources, je le charge comme cela :
properties.load(webappHome + "/webapps/mywebapp/resources/file.prop");
webappHome est une String que j'obtiens en faisant :
String webappHome = System.getProperty("catalina.home")
(J'ai laissé tomber System.getenv("CATALINA_HOME") comme mon post
précédent le suggérait car il y avait des problèmes avec les versions de
java < 5)

Je pensais avoir résolu tous les problèmes. Maintenant ma webapp
fonctionne sur Linux, MacOSX et W2000... mais à condition que Tomcat
soit le container ! (car appel à catalina)

D'où ma question : comment déterminer des chemins pour qu'une webapp
soit vraiment portable ???


Bonjour,

Colle tes fichiers dans :
.../webapps/mywebapp/WEB-INF/classes

et charge les par : Class.getResourceAsStream("/monfichier.prop");

Voila, le "/" (si je me souviens bien) te fait pointer dans .../webapps/mywebapp/WEB-INF/classes
tu peux donc creer des répertoires en dessous.

Enfin c'est une solution, il en existe d'autres ...

--
Cordialement,

Patrice Trognon
http://wwW.javadevel.com

Avatar
SL
flipouk wrote:
Je ne m'en sors plus avec le problème suivant que je pensais être
simple, pourtant.

J'ai une webapp sous Tomcat 5.5. Elle fontionne très bien mais certaines
de ses JSP et de ses servlets ont besoin d'accéder à un fichier de
properties.

Pour accéder à ce fichier qui est dans le répertoire
.../webapps/mywebapp/resources, je le charge comme cela :
properties.load(webappHome + "/webapps/mywebapp/resources/file.prop");
webappHome est une String que j'obtiens en faisant :
String webappHome = System.getProperty("catalina.home")
(J'ai laissé tomber System.getenv("CATALINA_HOME") comme mon post
précédent le suggérait car il y avait des problèmes avec les versions de
java < 5)

Je pensais avoir résolu tous les problèmes. Maintenant ma webapp
fonctionne sur Linux, MacOSX et W2000... mais à condition que Tomcat
soit le container ! (car appel à catalina)

D'où ma question : comment déterminer des chemins pour qu'une webapp
soit vraiment portable ???


cf servlet API doc.
il faut utiliser ServletContext.getRealPath("/"),
cela te donne le chemin absolu de la racine du conteneur.

et comme ca fait partie de l'API Servlet ... c'est portable.

Avatar
flipouk
Bonjour,

Colle tes fichiers dans :
.../webapps/mywebapp/WEB-INF/classes

et charge les par : Class.getResourceAsStream("/monfichier.prop");

Voila, le "/" (si je me souviens bien) te fait pointer dans .../webapps/mywebapp/WEB-INF/classes
tu peux donc creer des répertoires en dessous.

Enfin c'est une solution, il en existe d'autres ...

Merci pour cette réponse, mais je souhaiterais si possible séparer

WEB-INF/classes (bytecode) des autre fichiers (ASCII) pour simplifier
les mises à jour ultérieures éventuelles.
C'est en tout cas bien plus portable que mon bricolage :)
F.

--
,_,
(O,O) Plus je connais les hommes,
( ) Plus j'aime ma machine
-"-"----------------------------------------------
Flipouk. GNU/Linux, MacOSX et Java : même combat !
--------------------------------------------------

Avatar
flipouk
cf servlet API doc.
il faut utiliser ServletContext.getRealPath("/"),
cela te donne le chemin absolu de la racine du conteneur.

et comme ca fait partie de l'API Servlet ... c'est portable.

Exactement ce dont j'avais besoin. Je teste de suite. Merci beaucoup !

F.

--
,_,
(O,O) Plus je connais les hommes,
( ) Plus j'aime ma machine
-"-"----------------------------------------------
Flipouk. GNU/Linux, MacOSX et Java : même combat !
--------------------------------------------------

Avatar
Antoine Magnier
On Fri, 1 Apr 2005, flipouk wrote:

cf servlet API doc.
il faut utiliser ServletContext.getRealPath("/"),
cela te donne le chemin absolu de la racine du conteneur.

et comme ca fait partie de l'API Servlet ... c'est portable.

Exactement ce dont j'avais besoin. Je teste de suite. Merci beaucoup !

F.

--
,_,
(O,O) Plus je connais les hommes,
( ) Plus j'aime ma machine
-"-"----------------------------------------------
Flipouk. GNU/Linux, MacOSX et Java : même combat !
--------------------------------------------------



pas vraiment car certains serveur d'applications type bea par
exemple renvoyent systematiquement null pour des webapp contenus dans des
wars...

Antoine


Avatar
flipouk
cf servlet API doc.
il faut utiliser ServletContext.getRealPath("/"),
cela te donne le chemin absolu de la racine du conteneur.

et comme ca fait partie de l'API Servlet ... c'est portable.

pas vraiment car certains serveur d'applications type bea par


exemple renvoyent systematiquement null pour des webapp contenus dans des
wars...

Antoine
Merci pour ton aide Antoine.

Je certifierai ma webapp pour Tomcat (le seul que je puisse tester, car
étant développeur indépendant et bénévole, je ne peux pas me payer les
autres). Les gens utilisant d'autres serveurs d'application devront
éventuellement adapter ce chemin à la main. Dommage :(
A+
Flipouk



Avatar
Lionel
flipouk wrote:
Merci pour ton aide Antoine.
Je certifierai ma webapp pour Tomcat (le seul que je puisse tester,
car étant développeur indépendant et bénévole, je ne peux pas me
payer les autres).


Pour info ça marche avec websphere 5, qui ne coûte qu'une poignée de
milliers de dollars par processeur, j'ai pas les tarifs exacts en tête :)

Avatar
Fabrice Bacchella
On Thu, 07 Apr 2005 06:19:18 +0100, flipouk wrote:

Merci pour ton aide Antoine.
Je certifierai ma webapp pour Tomcat (le seul que je puisse tester, car
étant développeur indépendant et bénévole, je ne peux pas me payer les
autres). Les gens utilisant d'autres serveurs d'application devront
éventuellement adapter ce chemin à la main. Dommage :(


Resin & iplanet sont téléchargeable gratuitement. Après faut voir ce
que dit la licence pour les développeurs. Puis y a aussi jboss & jonas
non ?
--
www.castalie.fr

Avatar
Jean-Louis Liagre
Fabrice Bacchella wrote:
On Thu, 07 Apr 2005 06:19:18 +0100, flipouk wrote:


Merci pour ton aide Antoine.
Je certifierai ma webapp pour Tomcat (le seul que je puisse tester, car
étant développeur indépendant et bénévole, je ne peux pas me payer les
autres). Les gens utilisant d'autres serveurs d'application devront
éventuellement adapter ce chemin à la main. Dommage :(



Resin & iplanet sont téléchargeable gratuitement. Après faut voir ce
que dit la licence pour les développeurs. Puis y a aussi jboss & jonas
non ?


iplanet s'appelle maintenant Sun Java System Application Server et est
entierement gratuit, sans limitation d'utilisation (développement,
production et redistribution) dans sa version PE (Platform Edition).

http://www.sun.com/software/products/appsrvr/index.xml


Avatar
flipouk
Jean-Louis Liagre wrote:
iplanet s'appelle maintenant Sun Java System Application Server et est
entierement gratuit, sans limitation d'utilisation (développement,
production et redistribution) dans sa version PE (Platform Edition).

http://www.sun.com/software/products/appsrvr/index.xml
Cool, merci !

F.