comment obtenir le répertoire de travail pour une webapp dans tomcat?

Je dois placer des fichiers de parameters dans le répertoire de travail afin de configurer mon application.

J’ai essayé de le mettre dans ./WEB-INF/ mais cela n’a pas fonctionné, aucune idée de l’endroit où se trouve le «répertoire de travail»?

Merci.

    Bien que je réalise que vous n’avez pas posé cette question de manière spécifique, cela pourrait peut-être résoudre votre problème réel …

    Avez-vous envisagé de mettre vos fichiers de configuration sous WEB-INF / classes? De nombreux fichiers de configuration dans une application Web sont chargés en tant que ressources et non en tant qu’objects “fichier”. Si vous placez vos fichiers de configuration sous WEB-INF / classes, ils seront disponibles en tant que ressources via ClassLoader.

    EDIT: En parallèle, il y a un léger danger à placer vos fichiers de configuration directement sous WEB-INF, car ils peuvent être exposés aux utilisateurs finaux en tapant simplement l’URL correcte. Cela dépend d’autres parameters de votre conteneur Web, mais c’est une possibilité réelle et s’est produite plus d’une fois. J’espère que vous ne faites pas quelque chose comme garder les informations de connexion DB là …

    La spécification Servlet fournit à votre application Web un répertoire de travail spécifique à ServletContext qui dispose des permissions de lecture, d’écriture et de suppression conformément à la stratégie de sécurité standard de Tomcat:

    File workingDir = (File)servletContext.getAtsortingbute(ServletContext.TEMPDIR); 

    Vous créerez normalement un sous-répertoire correspondant à vos besoins spécifiques, car d’autres composants, en particulier Tomcat, l’utiliseront également pour leurs propres besoins.

    Je ne pense pas qu’il existe un moyen d’obtenir un répertoire de travail dans l’application Web. Cependant, vous pouvez utiliser la méthode ServletContext.getRealPath() pour obtenir le chemin réel correspondant au chemin virtuel donné.

    Si vous pensez en avoir besoin, détrompez-vous.

    Que faire si la racine de votre application est un fichier WAR et non un “répertoire”?

    Veuillez décrire ce que vous pensez en avoir besoin. Peut-être y a-t-il une meilleure solution au problème que vous rencontrez en obtenant un chemin de répertoire absolu.

    J’ai raté le bit sur les fichiers de configuration. La réponse ci-dessous est correcte: placez-les dans WEB-INF / classes; getResourceAsStream() est votre ami pour lire le contenu.

    Cela fonctionnera avec les fichiers WAR, explosés ou non. Il maintient votre application Web agréable et portable.

    Pour stocker des parameters de configuration sans append javax.servlet à mon projet, j’ai construit une chaîne dans le répertoire config et mon fichier de configuration avec:

     import java.io.file; Ssortingng webAppRoot = System.getProperty( "catalina.base" ); Ssortingng s = File.separator; Ssortingng configDir = webAppRoot + s + "webapps" + s + "myApp" + s + "WEB-INF" + s + "config"; Ssortingng configFile = configDir + s + "myApp.config"; 

    L’utilisation de File.separator garantit que cette solution fonctionne sur Windows et Linux.