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

avec Java Discussion :

Attendre la fin de l'exécution d'une méthode avant de continuer à dérouler le code


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut Attendre la fin de l'exécution d'une méthode avant de continuer à dérouler le code
    Bonjour,

    Je souhaiterai savoir quelle classe et quelle méthode Java utiliser afin d'attendre la fin de l'exécution d'une instruction Java avant de continuer le traitement qui la suit.

    Merci d'avance pour vos réponses!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Points : 154
    Points
    154
    Par défaut
    Si j'ai bien compris ta question : A ma connaissance, tout langage procédural exécute les instructions d'un programme d'une manière ordonnées pour éviter des conflits de valeurs de variables. Donc ce que tu souhaite faire se fait automatiquement par Java.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Sauf si tu veux faire du multi-threading.

    Je pense que tu vas devoir donner plus de précisions sur ce que tu veux faire... Si tu n'as pas de multithreading, il te suffit effectivement de mettre la première instruction avant la suivante pour être sûr qu'elles s'exécutent dans l'ordre.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    En faites nous avons une application de gestion d'un annuaire OpenLDAP, et lorsque nous effectuons une recherche, cela génère 2 fichiers d'export de la recherche en parallèle. Le problème c'est que la génération de ces fichiers semblent prendre plus de temps que l'affichage du résultat de la recherche, et donc je souhaiterai finir la génération de mes fichiers avant l'affichage.

    Ou alors je pensais utiliser des servlets afin de faire l'export du résultat de la recherche quand l'utilisateur souhaite le récupérer, mais je ne sais pas vraiment comment développer une servlet...

    J'ai juste vu sur 2 3 sujets qu'il était possible d'appeler un servlet par un lien, et que c'était la méthode doGet de ma servlet qui serait appelée ainsi. Après je ne sais pas comment définir la référence à ma servlet sous forme de lien :/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oula, ça devient un peu compliqué.

    J'imagine que si tu as posté dans le forum "Débuter" c'est parce que tu n'es pas un kador en Java... Déjà si tu nous en disait un peu plus sur ton niveau ça nous aiderait à comprendre d'où vient ton problème.

    Ensuite sur quel type d'application est-ce que tu travailles ? Une appli web ou une appli desktop ? Une interface web (IE, Firefox) ou une interface de client lourd ?

    Ensuite est-ce que tu peux dire si l'application utilise du multithreading (Y a-t-il des classes qui héritent de Thread ou qui implémentent Runnable ?)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Salut kei, alors:
    Citation Envoyé par kei2906 Voir le message
    Déjà si tu nous en disait un peu plus sur ton niveau ça nous aiderait à comprendre d'où vient ton problème.
    Je me débrouilles en java mais je n'ai pas vu grand chose pour le moment aussi...


    Citation Envoyé par kei2906 Voir le message
    Ensuite sur quel type d'application est-ce que tu travailles ? Une appli web ou une appli desktop ? Une interface web (IE, Firefox) ou une interface de client lourd ?
    Je bosse sur une application web.


    Citation Envoyé par kei2906 Voir le message
    Ensuite est-ce que tu peux dire si l'application utilise du multithreading (Y a-t-il des classes qui héritent de Thread ou qui implémentent Runnable ?)
    That is the kouechtionne, je ne pense pas sincèrement car c'est une application assez banale que nous avons.

    J'ai commencé à me pencher sur la solution de la servlet, je teste ca tout à l'heure, je pense que ca devrait marcher Mais par contre il me reste une inconnue: comment faire pour rediriger le fichier généré lors de l'appel de la servlet vers le navigateur?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Si tu me dis que tu n'as pas de multithreading, je ne vois pas bien d'où peut venir ton problème. Si tu as une méthode qui génère un fichier, le reste du code ne peut pas s"exécuter tant que la méthode n'a pas terminé son travail...

    Montre-nous le bout de code qui est censé générer ton fichier d'export.

    Concernant les servlet : En général toutes les applis web en Java sont basées sur des servlet. Si tu as une appli web qui tourne ça veut dire que tu as déjà une servlet. A moins... que tout le code se trouve dans les JSP ? (beeeeeeeeeerk )

  8. #8
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Citation Envoyé par Lex92 Voir le message
    J'ai commencé à me pencher sur la solution de la servlet, je teste ca tout à l'heure, je pense que ca devrait marcher Mais par contre il me reste une inconnue: comment faire pour rediriger le fichier généré lors de l'appel de la servlet vers le navigateur?
    Tu as un paramètre response, tu récupères son outputStream, et tu ecris le contenu du fichier ladedans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    byte[] data = LeContenuDuFichier;
     
    response.setContentLength(data.length);
    response.getOutputStream().write(data);
    response.setContentType("LeTypeMIMEDuResultat");
    Citation Envoyé par kei2906 Voir le message
    Concernant les servlet : En général toutes les applis web en Java sont basées sur des servlet. Si tu as une appli web qui tourne ça veut dire que tu as déjà une servlet. A moins... que tout le code se trouve dans les JSP ? (beeeeeeeeeerk )
    Non, pas toute application Web Java sur basée sur les Servlets.
    Et une JSP == une servlet après compilation.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Et une JSP == une servlet après compilation.
    Tu voulais pas plutôt dire "Une JSP = Une servlet AVANT compilation" ?

    Ce sont les JSP qui sont parsées puis transformées en servlet.

  10. #10
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Le "après compilation" réfère aux JSPs, qui sont compilés et transformées en Servlets.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Nous sommes donc d'accord (mais moi j'aurais mis une virgule après "servlet" )

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Je suis parti sur la piste de la servlet mais j'ai un soucis...

    Voici mon code:


    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
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		String type = request.getParameter("type");
    		Recherche rechercheToExport = (Recherche) request.getSession().getAttribute(Property.SESSION_RECHERCHE);
     
     
    		if ("csv".equals(type)) {
    			rechercheToExport.createCSVFile();
    			String csv = Property.getAbsolutePath(Property.PROJECT_FILE, Property.EXPORT_CSV_ZIP).replace("//", "/");
    			File f = new File(csv);
    			response.setContentType("multipart/zip"); 
     
     
    			response.setHeader("Content-Disposition", "attachment; filename=\"" + f.getName().trim() + "\";"); 
     
    			response.setContentLength((int)f.length()); 
    		} else if ("ldif".equals(type)){
    			rechercheToExport.createLDIFFile();
                            //a faire
    		} else {
    			//arg1.
    		}
    		//getServletContext().getRequestDispatcher("/jsp/recherche.jsp").forward(request, response);
    	}
    Les méthodes createCSVFile() et createLDIFFile() génèrent dans mon appli web chacun un fichier zip, l'un contenant un fichier au format csv, l'autre au format ldif.

    Lorsque je teste l'appli web, je fais une recherche, puis je clique sur le lien d'export au format csv (vu que c'est le seul export que j'ai développé pour le moment lol). Problème: je n'arrive pas à récupérer le fichier! Il fait 0 octets! Pourtant si je regarde ds mon workspace, le fichier d'export lui est bien existant et correctement généré...

    J'ai laissé en commentaire une ligne que j'avais mise aussi avant, je ne sais pas si elle me servira vraiment.

    Aidez moi svp!

Discussions similaires

  1. Attendre la fin de l'exécution d'une instruction?
    Par mhanyu dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 23/08/2007, 16h41
  2. Attendre la fin de l'execution d'une fonction
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2007, 10h33
  3. Réponses: 5
    Dernier message: 03/04/2007, 17h37
  4. attendre la fin de chargement d'une page avant de continuer le script
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2006, 09h50
  5. Réponses: 3
    Dernier message: 22/10/2004, 12h04

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