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

Servlets/JSP Java Discussion :

Sérialisation d'un bean et dossier de sauvegarde: problème de chemin relatif par rapport au contexte


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Sérialisation d'un bean et dossier de sauvegarde: problème de chemin relatif par rapport au contexte
    Bonjour,
    Je me tourne un peu désespéré vers le forum, après une après midi passé bloqué sur ce problème (j'ai fait les forums, google etc. mais je ne trouve pas de solution, peut être par manque de maitrise?)
    Voila je fait un application web dynamique en J2EE.j'ai pour cela un bean panier que je veux sérialiser (après modification) et désérialiser pour mettre à jour des blocs de ma pages jsp Accueil. J'ai donc implémenté sérializable et 2 méthodes pour sauvegarder et récuperer mon bean. Je souhaite stock panierDuJour.ser dans un dossier beanSerialize, à la racine de mon application. La ou je coince, c'est pour cibler le chemin pour la sauvegarde et la récupération: si je met un chemin en absolu ça marche mais c'est pas le but, sur le chemin en relatif je me casse les dents (aucun fichier ne se sauvegarde ou je veux, et java.ioException à tous les coups).

    Quelqu'un pourrait il me filer un coup de main? (je joint des éléments, n'hésitez pas à me demander si vous avez besoin d'autres choses). Merci par avance pour votre aide!

    Nom : 1.JPG
Affichages : 214
Taille : 48,0 Ko

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    public static void sauverPanier(Panier panier) {
    		ObjectOutputStream oos = null;
    		try {
    			final FileOutputStream fichier = new FileOutputStream(
    					"beanSerialize\\panierDuJour.ser");
    			oos = new ObjectOutputStream(fichier);
    			oos.writeObject(panier);
    			oos.flush();
    		} catch (final java.io.IOException e) {
     
    		} finally {
    			try {
    				if (oos != null) {
    					oos.flush();
    					oos.close();
    				}
    			} catch (final IOException ex) {
    				ex.printStackTrace();
     
    			}
    		}
    	}
     
    	public static Panier recupererPanier() {
    		Panier panierDuJour=null;
    		ObjectInputStream ois = null;
    		try {
    			final FileInputStream fichier = new FileInputStream("beanSerialize\\panierDuJour.ser");
    			ois = new ObjectInputStream(fichier);
    			panierDuJour = (Panier) ois.readObject();
    		} catch (final java.io.IOException e) {
    			e.printStackTrace();
    		} catch (final ClassNotFoundException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (ois != null) {
    					ois.close();
    				}
    			} catch (final IOException ex) {
     
    				ex.printStackTrace();
    			}
    		}
    		return panierDuJour;
    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
    16
    17
    18
    19
    	/* Constantes */
    	public static final String ATT_CLIENT = "client";
    	public static final String ATT_FORM = "form";
    	public static final String ATT_PANIER = "panier";
    	public static final String ATT_SESSION_USER = "sessionUtilisateur";
    	public static final String VUE = "/WEB-INF/accueil.jsp";
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    		Panier p=new Panier("test", 2);
    		Panier.sauverPanier(p);
    		Panier panier=Panier.recupererPanier();
            request.setAttribute(ATT_PANIER, panier);
     
    		/* Transmission à la page JSP en charge de l'affichage des données */
    		this.getServletContext().getRequestDispatcher(VUE)
    				.forward(request, response);
    	}

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu ne devrais rien stocker dans la dossier de ton application parce que:

    • certains conteneur effacent ce dossier à chaque démarrage
    • il est effacé à chaque redéploiement
    • par défaut, il est accessible par l'url


    Quand on dois faire du stockage permanent en dehors d'une base de données, depuis une application web, on le fait dans un dossier à part, à l'extérieur du conteneur J2EE, et on mentionne le chemin vers ce dossier dans la configuration de l'application. Concrètement cela dépend de comment tu gère la configuration de ton application, on peux envisager pour commencer une variable d'environnement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET MONAPP_HOME="/some/folder/home/"

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File dossier = new File(System.getProperty("MONAPP_HOME"));
    File sortie = new File(dossier,"beanserializer.ser");

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonjour et déja merci pour la réponse, j'avais bien déja vu ce point mais sans en faire le rapprochement avec les conséquences...

    En ce qui concerne ce fameux dossier, donc hors de l'application, j'ai encore 2 questions:
    - Ma config est dans un fichier xml, c'est bon aussi pour ajouter le chemin du dossier?
    - Toujours dans ces histoires de chemin, je comprends pas ou me mènera le chemin /some/folder/home/: pour moi c'est un chemin relatif, donc équivaut à monSite/some/folder/home/?

    Merci pour ton aide

Discussions similaires

  1. [XL-2003] changer le dossier de sauvegarde
    Par MarcelG dans le forum Conception
    Réponses: 4
    Dernier message: 17/02/2011, 10h42
  2. Réponses: 1
    Dernier message: 03/04/2010, 10h03
  3. Comparer deux dossiers avec sauvegarde
    Par Doo89 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 16/02/2009, 13h38
  4. VBA Word - Création 2 dossiers + 2 sauvegardes
    Par wouebmaster dans le forum VBA Word
    Réponses: 16
    Dernier message: 12/01/2006, 13h33
  5. Réponses: 10
    Dernier message: 01/09/2005, 20h37

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