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 :

Accès au disque dur : fichiers de conf., dépôt de fichiers


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut Accès au disque dur : fichiers de conf., dépôt de fichiers
    Bonjour,

    Je développe une application web, déployée sur Tomcat, et je vais avoir besoin d'accéder au disque.

    • Où placer des fichiers .properties (confidentiels), et comment y accéder ?
    • Où et comment déposer des fichiers (confidentiels) ?
    • Comment déposer des fichiers afin qu'ils soient accessibles via le web ?


    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    Tu peux écrire des fichiers n'importe où sur le disque (le chemin d'accès par défaut est le chemin de l'exécutable tomcat). Si tu veux écrire dans le chemin de ton application tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String path = this.getServletContext().getRealPath("nom_de_ton_appli");
    qui va te renvoyer le chemin absolu vers le dossier de ton appli.

    Si tu veux avoir des fichiers confidentiels le mieux est de les placer dans le dossier WEB_INF qui est inaccessible via URL

    Tout le reste est accessible via une URL, sauf si tu as protégé le dossier (voir le lien suivant pour la protection des pages:
    Sécurité sous Tomcat)

  3. #3
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Pour déposer des fichiers qui seront accessibles par le Web, outre le chemin de ton application, tu peux aussi te placer dans le contexte de l'application ROOT et utiliser des sous-répertoires spécifiques pour déposer tes fichiers si ils doivent être accessibles hors du contexte de ton application.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Merci pour ces informations. Les choses se précisent. J'aimerais donc :
    • Lire un fichier .properties depuis WebContent/WEB-INF/properties ou WebContent/WEB-INF/classes
    • Déposer puis lire des fichiers XML depuis WebContent/WEB-INF/xml
    • Déposer des images dans WebContent/images

    Comment faire au plus simple pour accéder à ces répertoires ? Est-il possible d'y accéder depuis n'importe quelle classe, sans Servlet d'initialisation ?

  5. #5
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Le plus simple reste de l'appeller depuis une servlet parce que tu peux facilement récupérer le chemin d'accès, sinon tu peux essayer d'utiliser
    [code]javax.naming.Context ctx = new InitialContext();[\code]
    Et ensuite de récupérer des informations que tu auras insérerau préalable dans le contexte (au pif: le chemin d'accès).

    Une méthode barbare consisterai à écrire le chemin d'accès absolu vers tes dossiers dans un fichier properties que tu placerai dans le dossier bin de tomcat. Ensuite tu lis ce fichier (pour retrouver le chemin d'accès depuis ta classe java.
    C'est très moche mais ça devrai marcher aussi.

    Enfin (mais la on tombe dans le barbare) si tu n'as vraiment aucun contact possible avec tomcat, tu peux toujours mettre le chemin d'accès en dur dans ton code.

  6. #6
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    J'allais oublier, si ton fichier propriétés est standard et que tu veux l'utiliser ave les outils adaptés (je pense entre autres au java.util.PropertyResourceBundle) qui te permettent de lire un fichier de propriétés directement depuis le classpath sans avoir besoin de savoir où est exactement ce fichier.
    Pour les fichiers à écrire, tu peux lui configurer le répertoire (absolu ou relatif, tout dépendra du traitement de la racine dans ton code java) dans ton fichier de propriétés, et de même pour les images.

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    J'ai réussi à accéder à mon fichier de properties à la racine du classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    properties.load(getClass().getClassLoader().getResourceAsStream(fileName))
    En revanche, comment obtenir un OutputStream pour écrire ce même fichier ?

    Sinon je vais m'attaquer à l'écriture dans un fichier situé dans WEB-INF...

    Merci.

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Finalement, tout serait plus simple si j'utilisais une servlet d'initialisation, comme conseillé. Oui mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	<servlet>
    		<servlet-name>PathUtils</servlet-name>
    		<servlet-class>utils.PathUtils</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<listener>
    		<listener-class>scheduler.Scheduler</listener-class>
    	</listener>
    Le Scheduler a besoin du PathUtils, or ce dernier est exécuté après.

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

Discussions similaires

  1. Accès au disque dur depuis live USB ?
    Par bigsister dans le forum Ubuntu
    Réponses: 4
    Dernier message: 08/07/2009, 14h29
  2. Acces au disque dur delicat
    Par thorium90 dans le forum Composants
    Réponses: 4
    Dernier message: 28/08/2008, 14h44
  3. [Kubuntu 8.04] Accés aux disques durs
    Par skandhal dans le forum Ubuntu
    Réponses: 3
    Dernier message: 03/07/2008, 14h52
  4. [Thread] Accès multiples disque dur
    Par Djakisback dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 21/05/2006, 13h46
  5. [Applet]avoir l'accès au disque dur local
    Par ehmppowa dans le forum Applets
    Réponses: 2
    Dernier message: 10/01/2006, 15h23

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