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

Développement Web en Java Discussion :

Faire patienter pendant un processus


Sujet :

Développement Web en Java

  1. #1
    Invité
    Invité(e)
    Par défaut Faire patienter pendant un processus
    Bonjour,

    J'ai un formulaire qui premet d'uploader un document.
    Une servlet récupère les informations du formulaire, crée un objet 'Document', créer un objet 'Converter' et lance la convertion du document au format html grâce à cet objet.

    La lancement de la convertion se fait en ajoutant le 'Converter' à une instance statique de 'ConverterManager'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Converter converter = 
            new PdfToHtmlConverter(document.getChemin());
        converter.addConverterListener(this);				  
        converterManager.register(converter);					  
        converterManager.startConverter(converter);
    Ma servlet implémente 'ConverterManagerListener' et est notifiée lorsque la convertion est démarrée, terminée ou annulée (erreur).
    Lorsque la convertion est terminée (evènement 'converterFinished(Converter converter)' ) un DAO enregistre le document dans le SGBD (nom, chemin, categorie, etc..)

    La convertion peut durer +/- longtemps en fonction de la taille du document..


    Ma question :
    Comment faire patienter proprement ET élégament l'utilisateur durant la convertion ?
    Actuellement une fois que la servlet à lancé la convertion, elle retourne à la JSP avec le message "Le document '*****' à été correctement chargé."

    Plus d'infos :
    En fait l'utilisateur accéde toujours à la servlet 'http://intranet/documents/GestionDocuments".
    La servlet redirige vers la JSP dans le doGet et analyse l'action à effectuer dans le doPost
    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
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher rs = request.getRequestDispatcher(
            "/documents/GestionDocuments.jsp"
        );
        rs.forward(request, response);  
    }  	
    ..
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }  
    ..
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        int action = -1;
     
        if ( ServletFileUpload.isMultipartContent(request) ) {	
            // Necessaire avec utilisation de org.apache.commons.fileupload	
            try {
                items = upload.parseRequest(request);
                for (Iterator it = items.iterator(); it.hasNext();) {
                    FileItem item = (FileItem) it.next();
                    if ( item.getFieldName().equals("action") ) {
                        action = Integer.parseInt(item.getString());
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
        } else {
            action = Integer.parseInt(request.getParameter("action"));
        }
     
        switch ( action ) {
            case AJOUTER_DOCUMENT_ACTION :
                ajoutDocument(request, response);
                break;		
     
            default :
    	    doGet(request, response);		
        }
    }

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    personne n'a d'idée ?

    Je ne me fais peut-être pas bien comprendre ?

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 62
    Points : 75
    Points
    75
    Par défaut
    Pourquoi n'evalurais tu pas le temps moyen d'une conversion en fonction de la taille du document et faire une jauge qui se remplie à chaque unitée de temps par une notification. Ou bien notifier à chacune des étapes de la conversions et remplir ta jauge. C'est une solution parmis d'autres.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui je pourrais évaluer le temps moyen mais ça risque de chnager fortement en fonction du nombre d'images dans les fichiers à convertir et de la charge du serveur..

    Notifier chacunes des étapes ne servirait pas à grande chose étant donné que la convertion est en trois phases :
    1° préparer dossier temporaire
    2° convertir original dans dossier temporaire
    3° copier résultat dans dossier 'html' à côté de l'original

    et que seul la pahse 2 prend vraiment du temps

Discussions similaires

  1. [PHP 5.0] faire patienter pendant l'éxécution d'un script externe
    Par steph_arrow dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2011, 19h00
  2. Faire patienter pendant le traitement
    Par peplum37 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/11/2007, 16h58
  3. Réponses: 2
    Dernier message: 18/07/2007, 22h51
  4. Faire patienter pendant le téléchargement
    Par komoku dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/12/2006, 14h25
  5. faire patienter pendant un dlookup
    Par fbu78 dans le forum Access
    Réponses: 6
    Dernier message: 09/09/2006, 12h00

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