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 :

Appel RPC impossible avec des StringBuffer ?


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut Appel RPC impossible avec des StringBuffer ?
    Bonjour,

    J'ai besoin de créer un appel RPC donc voici la signature de la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	void getExportFlow(ProjetDTO current_project,
    			AsyncCallback<Map<String, StringBuffer>> callback);
    Selon GWT, le type StringBuffer est compatible et convertissable en JavaScript, seulement mon appel échoue quand je souhaite récupérer la réponse coté client (le traitement coté serveur s'effectue sans encombre !)

    Pour palier à ça, j'utilise des String plutôt qu'un StringBuffer et là ça passe mais j'aimerai toutefois rester sur un StringBuffer

    La trâce d'erreur GWT est classique :

    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
    com.google.gwt.user.client.rpc.StatusCodeException: The call failed on the server; see server log for details
    	at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:192)
    	at com.google.gwt.http.client.Request.fireOnResponseReceivedImpl(Request.java:264)
    	at com.google.gwt.http.client.Request.fireOnResponseReceivedAndCatch(Request.java:236)
    	at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:227)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    	at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod(IDispatchImpl.java:126)
    	at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:155)
    	at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
    	at com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
    	at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
    	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
    	at com.google.gwt.dev.SwtHostedModeBase.processEvents(SwtHostedModeBase.java:264)
    	at com.google.gwt.dev.HostedModeBase.pumpEventLoop(HostedModeBase.java:557)
    	at com.google.gwt.dev.HostedModeBase.run(HostedModeBase.java:405)
    	at com.google.gwt.dev.HostedMode.main(HostedMode.java:232)
    Des idées ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Si tu utilises une version de GWT qui supporte les StringBuffers et les méthodes que tu utilises (http://code.google.com/intl/fr-FR/we...kage_java_lang), ça devrait passer ...

    Sinon, on dirait que tu as une exception côté serveur, tu as les logs côté serveur ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    Je suis en GWT 1.7 et donc StringBuffer est supporté !

    Je n'ai aucune erreur coté serveur tout ce passe bien, je reçois bien mes résultats dans ma classe implémentant mon service RPC.

    C'est justement pour cette raison que je ne comprends d'où viens le problème.

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Et ça, c'est quoi :

    The call failed on the server; see server log for details

    Bon, je te l'accorde, c'est pas spécialement bien foutu.


    Regarde dans la console GWT, parfois, tu as l'erreur GWT en rouge (celle que tu as indiqué) et juste au dessus, il y a un warning en jaune (qui contient l'erreur serveur...)


    Tu reçois peut être bien ... mais au retour ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    Les voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [WARN] Server class 'fr.empeiria.tools.properties.GenerationFlux' could not be found in the web app, but was found on the system classpath
     
    [WARN] Adding classpath entry 'file:/C:/Documents%20and%20Settings/Empeiria/Mes%20documents/socleRbundle/workspaceRBundle/fr.empeiria.sgbdtools/bin/' to the web app classpath for this session
     
    More info: file:/C:/Documents%20and%20Settings/Empeiria/Bureau/gwt-windows-1.7.1/doc/helpInfo/webAppClassPath.html
    J'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <source path="fr.empeiria.sgbdtools.properties"></source>
    dans mon gwt.xml mais ça ne marche pas. fr.empeiria.sgdbtools étant un projet extérieur, dois je créer un module pour l"intégration à GWT ?

  6. #6
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Ton projet extérieur (qui semble utilisé que par la partie serveur) doit être ajouté dans ton classpath Java.

    • Soit tu relies ton projet fr.empeiria.sgdbtools à ton projet gwt s'ils sont dans le même workspace.
    • Soit tu fais un jar de ton projet fr.empeiria.sgdbtools que tu places ensuite dans le dossier www/WEB-INF/lib de ton projet gwt


    Si ton projet fr.empeiria.sgdbtools est uniquement utilisé par du code serveur, il faut virer la ligne que tu viens de mettre dans ton module gwt.

Discussions similaires

  1. Action appelée 2 fois, avec des param différents
    Par DesiS dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/08/2006, 10h47
  2. Réponses: 3
    Dernier message: 09/08/2006, 11h58
  3. Réponses: 6
    Dernier message: 28/11/2005, 12h03
  4. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58
  5. [Requête] Difficile (impossible ?) avec des dates
    Par starch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/04/2004, 11h26

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