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

Wildfly/JBoss Java Discussion :

[JBoss7] Où placer des fichiers téléchargeables dans ma webapp (PDF) sur JBoss ?


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut [JBoss7] Où placer des fichiers téléchargeables dans ma webapp (PDF) sur JBoss ?
    Salut à tous !

    Je gère une webapp JavaEE deployée sur un JBoss AS-7.
    Dans cette webapp, j'ai des liens (stockés dans la base de données) qui ouvrent un PDF.
    Pour l'instant, j'ai embarqué les PDF dans mon code (dans un répertoire au même niveau que WEB-INF) mais si jamais l'on veut remplacer ou modifier lesdits PDF, il faudra re-générer un WAR et le déployer à nouveau : galère.
    Je souhaiterais donc stocker mes PDF directement sur mon JBoss mais je ne sais pas du tout où les placer exactement ni à quoi ressemblera le chemin d'accès (que je dois stocker dans ma BDD pour rappel).

    Merci d'avance !
    .
    I'M BACK B*TCHEEEEEZZZZ

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Le mieux serait de les stocker en dehors du serveur et de paramétrer une variable d'environnement du serveur pour spécifier l'emplacement.
    Comme ceci, tu éviteras le problème d'écrasement lorsque tu redéploies l'application... pas très agréable

    Ensuite, pour récupérer les documents dans ton application, une simple servlet suffit, elle renverra via response.getOutputStream() le flux correspondant à ton fichier pdf
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    Salut OButterlin, merci d'avoir répondu.

    Tu as dit "en dehors du serveur", c'est-à-dire ?

    Je débarque dans le monde JavaEE, JBoss, tout ça tout ça... Je lis pas mal de doc mais ce n'est pas toujours évident. Pardonne-mes questions bêtes, si elles le sont !
    .
    I'M BACK B*TCHEEEEEZZZZ

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Elles ne le sont pas, j'aurais dû être plus précis

    Quand je disais en dehors du serveur, je voulais dire ailleurs que dans l'arborescence des dossiers du serveur d'application, par exemple, sur une unité à part du style "D:/Mon_dossier_PDF"

    Comme ceci, tu dissocies complètement tes documents pdf du serveur d'application ET de l'application web.

    Quand tu parles de "liens" vers ces pdf, peux-tu préciser la forme ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    L'appli comporte un menu, en cliquant sur certains éléments de ce menu, ça t'ouvre une nouvelle page et affiche un PDF.
    Le menu est "dynamique", ses éléments sont stockés dans la bdd.
    Et pour certains d'entre eux, j'ai un enregistré un lien (appelé dans le code) sous la forme /mawebapp/documents/monfichier.pdf

    L'unité à part que tu as mentionnée, concrètement c'est...un autre serveur ? Ou bien en local (ce qui m'étonne) ?
    .
    I'M BACK B*TCHEEEEEZZZZ

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    C'est a dire en dehors de ton serveur web.
    Pour eviter que tes fichiers ne soient ecraser lors du redeploiement.
    Eric

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Il suffirait de remplacer tes liens actuels par quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="./monApplication/pdfServlet?nomFichier=MonPDF1">Pdf 1</a>
    (ou tout autre forme de lien, javascript par exemple)

    Ensuite, il faut créer une servlet et l'enregistrer dans le web.xml

    Elle fera environ ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
       String repertoire = System.getProperty("Document_Path");
     
       String nom = request.getParameter("nomFichier");
     
       File file = new File(repertoire + nom);
     
       response.setContentType("application/pdf");
       response.getOutputStream().write(...);
     
       etc...
     
    }
    (là il faut que j'y aille, mais demain j'aurai plus de temps si tu n'y arrives pas)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    jeffray03, merci de la précision.

    OButterlin, je n'ai pas encore eu le temps de me pencher à nouveau sur le problème depuis hier soir mais sache que j'ai bien lu ton explication et je te remercie d'avoir pris le temps !
    Je reviens vers toi dès que possible.
    .
    I'M BACK B*TCHEEEEEZZZZ

  9. #9
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    Hello ! Me revoilà, dix ans plus tard. ()

    Merci encore d'avoir répondu et désolée de ne pouvoir réagir que maintenant.

    Le fait que tu évoques la servlet m'a fait creuser un peu de ce côté (je débarque totalement dans JavaEE), je me suis aidée de ta réponse et du tutoriel de Coyote sur le SDZ (un excellent tuto, en tout cas de mon point de vue de débutante).
    Qu'est-ce que "Document_Path" ?
    J'ai jeté un oeil du côté de System.getProperty (que je ne connais pas du tout). D'où "sors-tu" cette key ? Je veux dire, autant pour System.getProperties() j'ai trouvé une liste des keys possibles, mais rien pour getProperty().
    (Si je ne suis pas assez claire, n'hésite pas)

    Par ailleurs, finalement les fichiers devront être stockés sur le serveur.
    .
    I'M BACK B*TCHEEEEEZZZZ

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    System.getProperty(nom_donné) permet de récupérer une variable d'environnement positionnée sur le serveur, pour JBoss, on peut utiliser les scripts de démarrage run.bat pour windows et run.sh pour linux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    set JAVA_OPTS=%JAVA_OPTS% -Dnom_donné=D:/Documents
    ...
    Quand tu dis "les fichiers devront être stockés sur le serveur", tu parles de la machine abritant le serveur d'application ou tu parles du serveur d'application ?
    Dans le premier cas, recommandé à mon sens, c'est à ça que sert la servlet
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    Je voulais dire qu'ils sont stockés sur la machine (j'aurais dû préciser, my bad)

    Par contre...dans ma base de données j'ai mis le chemin "brut" d'accès auxdits fichiers PDF sur le serveur (/app/list/data...) et je me suis pris une erreur 404.
    Comment suis-je censée renseigner le chemin si ce n'est de cette manière ?
    .
    I'M BACK B*TCHEEEEEZZZZ

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Qu'entends-tu par "chemin brut" ?

    Parce que "/app/list/data" n'est pas très clair, /app pourrait être un point de montage linux mais sinon, ça me fait penser à un chemin relatif par rapport à la racine du serveur d'application

    Si c'est un chemin relatif, tu récupères le chemin "physique" en passant par le ServletContext comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String path = request.getSession().getServletContext().getRealPath("/app/list/data");
    ou si tu es en Servlet 3.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String path = request.getServletContext().getRealPath("/app/list/data");
    (si "app" est le nom de ton application, il faut retirer cette partie)

    Ceci dit, je maintiens que les documents devraient être en dehors du serveur d'application
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    OButterlin, mes excuses, je suis en alternance donc ce silence radio c'est simplement parce que j'étais en cours.

    Reprendre un projo existant sans avoir les compétences associées, c'est vraiment...casse-gueule.
    J'ai vraiment du mal. Je te remercie encore pour ta patience, vraiment.

    Puisque ça fait longtemps, je résume un brin.
    1. Actuellement (je n'ai procédé à aucun changement), j'ai mes fichiers "dans" l'appli, ce qui est moche.
    Arborescence dans NetBeans :
    +MaWebApp
    ----+Web Pages
    --------+WEB-INF
    --------+documents
    --------+error
    --------+resources


    2. Je dois renseigner le chemin d'accès aux fichiers dans la base de données. Pour l'instant c'est de type :
    /MaWebApp/documents/monFichier.pdf

    ==> Ca fonctionne, mais ce n'est pas idéal.

    Sans utiliser de servlet, j'ai tenté d'insérer dans la bdd un chemin sur le serveur, ce chemin est de type :
    /app/list/data/installedApps/pdfs/monFichier.pdf
    app n'est donc pas le nom de mon application, c'est un répertoire à la racine du serveur, au même niveau que des répertoires tels que bin, home, lib...
    Le .war de mon appli est déployé dans /app/list/data/installedApps/MaWebApp/deployments/
    .
    I'M BACK B*TCHEEEEEZZZZ

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2009, 10h01
  2. [Conception] Stocker des fichiers multimédia dans une base de données
    Par haifa84 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/03/2006, 17h47
  3. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  4. Réponses: 9
    Dernier message: 27/10/2005, 22h38
  5. [MFC] Ajout des fichiers récents dans un menu
    Par Choupinou dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2004, 16h47

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