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

GWT et Vaadin Java Discussion :

ServiceCallBack ignoré lors de l'utilisation du service


Sujet :

GWT et Vaadin Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut ServiceCallBack ignoré lors de l'utilisation du service
    Bonjour,

    J'ai créé un servlet ReadFileImpl pour lire les fichiers côté serveur que j'appel via ReadFileModel:
    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
    public class ReadFileModel {
     
     
    	private ReadFileServiceAsync readFile = GWT.create(ReadFileService.class);
    	private ReadFileServiceCallBack readFileCallback;
     
    	private ArrayList<String> readReturn;
     
    	public void setreadReturn(ArrayList<String> readReturn) {System.out.println("test ok");this.readReturn = readReturn;}
    	public ArrayList<String> getreadReturn() {return readReturn;}
     
    	@SuppressWarnings("unchecked")
    	public ReadFileModel(){
     
    		ServiceDefTarget serviceDef = (ServiceDefTarget) readFile;
    		serviceDef.setServiceEntryPoint(GWT.getModuleBaseURL()
    				+ "tools/file/readFile");
     
    		readFileCallback = new ReadFileServiceCallBack(this);
     
    	}
     
    	@SuppressWarnings("unchecked")
    	public void read(String fichier){
    		readFile.read(fichier,readFileCallback);
    	}
     
    }

    ReadFileImpl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ReadFileImpl extends RemoteServiceServlet implements ReadFileService{
    	/**
             * 
             */
    	private static final long serialVersionUID = -8441081256404793660L;
     
    	public ArrayList<String> read(String fichier){ ... }
     
     
    }
    ReadFileService :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface ReadFileService extends RemoteService{
     
    	public ArrayList<String> read(String fichier)
    			throws IllegalArgumentException;
    }
    ReadFileServiceAsync :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface ReadFileServiceAsync{
     
    	void read(String fichier, AsyncCallback<ArrayList<String>> callback);
     
    }
    ReadFileServiceCallBack :
    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
    public class ReadFileServiceCallBack implements AsyncCallback{
     
    	private ReadFileModel readFile;
     
    	public ReadFileServiceCallBack(ReadFileModel readFile){
    		this.readFile = readFile;
    	}
     
    	@Override
    	public void onFailure(Throwable caught) {
    		Window.alert(caught.getMessage());
     
    	}
     
    	@Override
    	public void onSuccess(Object result) {
    		readFile.setreadReturn((ArrayList<String>) result);
     
    	}
     
    }
    Lorsque je veux lire un fichier, tout ce passe bien, les affichages consoles me le montre, mais le ReadFileCallBack n'est jamais appelé !
    Si je mets un affichage console dans les deux fonctions onFailed() et onSuccess() rien ...

    Quelqu'un aurait-il une idée du soucis ??

    Merci,

    Mageni.

  2. #2
    Membre chevronné
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Par défaut
    Salut,

    Tu as positionné ton message en résolu !?

    Pour ta question, Tu n'aurais pas oublié le web.xml ?

    Il ne manque pas des annotations sur tes appels Rpc ?

    Reqarde bien la doc : http://code.google.com/intl/fr/webto...unication.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut
    Bonjour pvoncken,

    Mon problème n'étais pas lié à ma manière d'appeler mon service readFile, mais au fait qu'une erreur dans le code arrêtais le chargement de l'application pendant l'appel.

    Or comme il est asynchrone, je n'avais jamais la réponse ...

    D'ailleurs, le fait qu'il n' y ait que de l'asynchrone n'est pas un problème, mais plutôt une façon différent de coder, d'où les problème d'attente des réponses que j'ai eu précédemment (utilisation d'une réponse non encore renvoyé).

    Prenons un exemple tout bête; remplissage de formulaires par étapes.
    On est obligé de mettre en place un affichage d'attente à chaque action afin d'éviter que la personne ne commence à modifier un formulaire qui attend les informations précédentes.

    On a donc des controleurs du type :

    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
     monAction( monEvent e){
       monService.maMethode(e.getCeQuilFaut,new AsyncCallBack(){
                public void onSuccess(Object result) {
    					// on utilise result
                                            // on modifie l'affichage
     
    				}
     
    				@Override
    				public void onFailure(Throwable caught) {
    					// on gère les bugs
     
    				}
    			});
                 windows.afficherAttente();
    }
    Il est donc primordial de faire tous les traitements côté serveur, notamment pour les appels de méthode récursif ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de l'utilisation de FOP
    Par llaurentt dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 12/05/2006, 15h49
  2. Erreur lors de l' utilisation des objets ADO
    Par aityahia dans le forum Bases de données
    Réponses: 10
    Dernier message: 24/03/2006, 13h46
  3. setting ignorés lors du changement de lnf
    Par komando dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/02/2006, 09h01
  4. Eviter les erreurs lors de l'utilisation des compo Tsocket
    Par Coussati dans le forum Composants VCL
    Réponses: 5
    Dernier message: 01/02/2006, 19h14
  5. Erreur lors de l'utilisation de strlwr ?!
    Par MonsieurAk dans le forum C++
    Réponses: 4
    Dernier message: 05/12/2005, 10h22

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