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 :

[GWT] RPC issues (Serialization)


Sujet :

GWT et Vaadin Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut [GWT] RPC issues (Serialization)
    Bonjour,

    Je rencontre actuellement un problème dans le développement de mon application :
    Normalement mon code devrait permettre de remplir ma celltable coté client via la serialization d'un tableau de données (requêtes sql) côté serveur.

    Quand je fais ça de façon statique (en créant des élément à la main) pas de problème mais dans le cas contraire, une fois compilée, l'application m'affiche une barre de loading à la place des données.

    code server side :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    public Members[] getUser() throws IllegalArgumentException {
     
     
    		Connection conn = null;
     
    		// parameters
    		String url      = "jdbc:mysql://localhost/";
    		String db       = "grbl";
    		String driver   = "com.mysql.jdbc.Driver";
    		String user     = "xxx";
    		String pass     = "xxx";   
    		Members[] res   = new Members[10];
    		int i           =0;
    		int size        = 0; //size of Users db table
    		url = url + db;		 
     
     
    		try {
     
                	Class.forName(driver).newInstance();
                	conn = DriverManager.getConnection(url, user, pass);
     
    		} catch (Exception e) {
     
                	System.err.println("Mysql Connection Error: ");
                	// for debugging error
                	e.printStackTrace();
    		}
     
    		if (conn == null)  {
                	System.out.println("~~~~~~~~~~ can't get a Mysql connection");
    		}		
     
     
     
     
    		Statement select = null;
     
    		try {
    			select = conn.createStatement();
     
    			ResultSet result=null;
    			size = 10; //result.getRow();
    			i = 0;
    			result = select.executeQuery("select * from user");				
     
     
    			while (i<10){//) {	
    				result.next();
    				res[i].newMembers(result.getString(1),result.getString(2),result.getString(3));
    				i++;
    			}
    			return res;
     
     
     
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}       
     
            return res;
    	}

    code client side :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    USERS=new ArrayList<Lgm.User>();
    		greetingService.getUser(new AsyncCallback<Members[]>() {
     
     
    			@Override
    			public void onSuccess(Members[] result) {
     
    				for(int i=0; i< result.length;i++)
    					USERS.add(new User(result[i].firstname,result[i].lastname,result[i].activity));

    class Members :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package fr.lgm.shared;
     
    import java.io.Serializable;
     
    public class Members implements Serializable {
    	public String firstname,lastname,activity;
     
    	public void  newMembers(String firstname, String lastname, String activity) {
     
    		this.firstname = firstname;
    		this.lastname = lastname;
    		this.activity = activity;
    	}
    }

    Si quelqu'un aurait une idée à ce sujet, merci.

    Jérôme



    (GWT 2.2.0 - Eclipse 3.6.1 - Win7 64)

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Tu as un log à nous fournir?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    log de la console ?

    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
    [WARN] Exception while dispatching incoming RPC call
    com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract fr.lgm.shared.Members[] fr.lgm.client.ScheduleRequest.getUser() throws java.lang.IllegalArgumentException' threw an unexpected exception: java.lang.NullPointerException
    	at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    Caused by: java.lang.NullPointerException
    	at fr.lgm.server.ScheduleRequestImpl.getUser(ScheduleRequestImpl.java:145)
    	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.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
    	... 22 more
    [ERROR] 500 - POST /lgm/greet (127.0.0.1) 57 bytes

    Encore et toujours des erreurs de pointeur mais je vois ce qui est mal fait.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Caused by: java.lang.NullPointerException
    at fr.lgm.server.ScheduleRequestImpl.getUser(ScheduleRequestImpl.java:145)
    Tu as un NullPointer ligne 145.... Sans doute un objet mal instancié, peut-être un souci de connection à la base.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Oui j'ai vu que j'avais des Nullpointer. Le problème ne vient pas de la connection à la base, j'ai vérifié.
    Donc ça me semble bien être une mauvaise instanciation mais le problème c'est que je ne la détecte pas (c'est pour ça que je demande de l'aide :p).

    Le problème vient bien de ma boucle while car quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (result.next()) {			
    				res[0]=new Members();
    				res[0].newMembers(result.getString(1),result.getString(2),result.getString(3));
    				res[1]=new Members();
    				res[1].newMembers(result.getString(1),result.getString(2),result.getString(3));
    				res[2]=new Members();
    				res[2].newMembers("ccc","333","3333333333");
    				res[3]=new Members();
    				res[3].newMembers("ddd","4444","4");
    			}
    			return res;
    je n'ai pas de problème.

    Par contre avec le code fournis dans mon premier message et bien ça ne fonctionne plus (pourtant l’instanciation est la même)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    while (i<10){//) {
    result.next();
    res[i].newMembers(result.getString(1),result.getString(2),result.getString(3));
    i++;
    }
    Es-tu sure d'avoir 10 enregistrements en base? Le "while" de ton premier bout de code n'est pas le même que le deuxième.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Oui j'ai une vingtaine d'enregistrements dans ma table.

    Et oui le "while" diffère étant donné que je cherche à créer un Members pour chaque enregistrement trouvé dans la base alors que dans le deuxième morceau de code, les membres sont créer "à la main".

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Quoiqu'il en soit en faisant un while (i <10) tu ne crées que 10 "Member"

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Oui c'est sûr, c'était surtout un moyen de voir si j'arrive à créer mes Members de cette façon"semi-automatique" on va dire, après oui le but est d'arriver à quelque chose qui se remplis tout seul, mais ne sachant pas trop comment m'y prendre je fais ça petit à petit.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    remplace while (i < 10) par while (result.next())

    quel est le code de la ligne 145?

  11. #11
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Ce que tu proposes amène au même résultat.
    La ligne incriminée est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res[i].newMembers(result.getString(1),result.getString(2),result.getString(3));
    Merci pour ton aide

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Est-ce que tous tes enregistrements en base sont consistants? Est-ce que tu as des champs à null?

  13. #13
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Oui chaque champ de chaque table est bien remplis (aucun à null).

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Oula, je fatigue^^

    Tu fais un res[i].new...... mais ton tableau n'est pas initialisé. Il ne contient que des null.
    Avant ta ligne 145 il faut mettre un res[i] = new Member();
    Ce que tu fais bien lorsque tu instancies à la main.

  15. #15
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 7
    Points
    7
    Par défaut
    Ouah je suis un abrutis, désolé de t'avoir fait perdre ton temps ...

    Le pire c'est que ça ne m'a pas sauté aux yeux.

    Merci galel

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par Jiraf Voir le message

    Le pire c'est que ça ne m'a pas sauté aux yeux.
    Ouai on est deux^^

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

Discussions similaires

  1. T'chat GWT + RPC Erreur
    Par TheDwarf01 dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 11/03/2010, 20h15
  2. GWT rpc générer un fichier XML
    Par slimArafa dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 17/08/2009, 17h40
  3. Gwt - RPC - Base de données
    Par fluff dans le forum GWT et Vaadin
    Réponses: 4
    Dernier message: 07/05/2009, 09h00
  4. GWT-RPC, sécurité et serveur "clusterisé"
    Par ndeloof dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 09/07/2008, 20h31
  5. GWT/RPC sérialization d'objet
    Par amarige dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 08/05/2008, 19h52

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