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!![]()
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!![]()
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.
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.
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 :/
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 ?)
Salut kei, alors:
Je me débrouilles en java mais je n'ai pas vu grand chose pour le moment aussi...
Je bosse sur une application web.
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 marcherMais 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?
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)
Bonjour,
Tu as un paramètre response, tu récupères son outputStream, et tu ecris le contenu du fichier ladedans
Non, pas toute application Web Java sur basée sur les Servlets.
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");
Et une JSP == une servlet après compilation.
Le "après compilation" réfère aux JSPs, qui sont compilés et transformées en Servlets.
Nous sommes donc d'accord (mais moi j'aurais mis une virgule après "servlet")
Je suis parti sur la piste de la servlet mais j'ai un soucis...
Voici mon code:
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.
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); }
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!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager