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] Connexion MySQL + transport client/server


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut [GWT] Connexion MySQL + transport client/server
    Bonjour,

    Je commence par détailler ce qui va bien :

    * La version de GWT que vous utilisez :
    o GWT 2.1.1

    * Les librairies GWT additionnelles que vous utilisez.
    o aucune

    * L'environnement de développement que vous utilisez (éventuellement).
    o Eclipse 3.6


    Je travail actuellement sur un projet de fin d'année basé sur GWT et étant très novice dans l'utilisation de GWT et de java je me pose pas mal de questions.

    Mon but est d'arriver à créer une grille dont les cellules seraient "alimentées" par une base de données (en fait je doit créer un planning : nom d'utilisateur, date etc).

    J'ai bien compris que GWT ca se décompose en une partie cliente et une serveur et j'ai commencé par créer une connexion à ma base de donnée (MySQL) côté serveur dans une classe crée exprès.

    Ensuite j'ai lu pas mal de tuto et d'articles en tout genre pour comprendre comment faire passer mes données vers le côté client et la c'est un peu la pagaille, si j'ai bien compris on doit soit utiliser du JSON soit du XML et c'est la que je bloque ... Comment mettre cela en place que ce soit pour faire les requêtes sur mes bases côté serveur ou pour les "transporter" côté client.

    Si quelqu'un a la patience de me faire un petit topo la dessus je suis preneur

    J'ai bien évidemment lu un maximum de choses avant de venir poster ici, et c'est plutôt la diversité des infos qui m'amènent à poster.


    Merci,
    Jérôme

  2. #2
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    J'ai finalement trouvé quelque chose de pas mal et que j'ai adapté à mon problème, seulement à la compile j'obtiens ces erreurs :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    15:03:34.782 [ERROR] [grblapp] Unable to load module entry point class lgm.ft.client.GRBLapp (see associated exception for details)
    java.lang.NullPointerException: null
        at lgm.ft.client.GRBLapp.onModuleLoad(GRBLapp.java:32)
        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.ModuleSpace.onLoad(ModuleSpace.java:396)
        at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:183)
        at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
        at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
        at java.lang.Thread.run(Unknown Source)

    Quelqu'un aurait une piste ? Est ce que j'aurai pas oublié qqchose ds mon WEB-INF ou autre ?


    Merci

  3. #3
    Membre expérimenté
    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
    Par défaut
    Tu as un NullPointer, sans le code incriminé impossible de t'aider.

  4. #4
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    D'après ce que j'ai compris sur les NullPointer, il y a de forte chance que ça vienne d'un tableau, donc voilà le code qui est surement concerné ...


    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
    public class DB_Grbl extends DB_Conn {
     
            /**
             * constructor - nothing to do
             */
            public DB_Grbl() {
                    // nothing to do
            }
     
     
            public GrblData[] getBibleInfo() {
     
                    String query = "SELECT nom, prenom FROM user;";
     
                    // prepare for rpc transport
                    GrblData[] bibleData = null;
     
                    try {
                            Connection connection = getConn();
                            Statement select = connection.createStatement();
                            ResultSet result = select.executeQuery(query);
     
                            // init object into the size we need, like a recordset
                            int rsSize = getResultSetSize(result); //size the array
                            bibleData = new GrblData[rsSize];
     
                            int i = 0;
                            while (result.next()) {
     
     
                                    bibleData[i] = new GrblData(); 
     
     
                                    bibleData[i].UserFirstName = result.getString(2);
                                    bibleData[i].UserLastName = result.getString(2);
                                    getHowManyVerses(bid);
     
                                    i++;
                            }
     
                            // clean up
                            result.close();
                            connection.close();
     
                    } catch(Exception e) {
     
                            System.err.println("Mysql Statement Error: " + query);
                            e.printStackTrace();
     
                    }
     
                    // return the array
                    return bibleData;
            }
     
    }
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    public class GrblInfoWidget extends Composite {
     
        private RpcCallServiceAsync rpc;
     
        // main widget panel
        private VerticalPanel pWidget = new VerticalPanel();
        private LoadingWidget loading = new LoadingWidget();
        private VerticalPanel pBibleTable = new VerticalPanel();
     
        // table for the bible info
        private Grid grid = null;
     
        /**
         * constructor - init the composite widget for use 
         */
        public GrblInfoWidget() {
     
                HorizontalPanel hp = new HorizontalPanel();
                hp.add(new HTML("List of users "));
                hp.add(loading);
     
                pWidget.add(hp);
                pWidget.add(pBibleTable);
     
                // init widget, this can be added into the rootpanel
                initWidget(pWidget);
     
                // init the rpc
                rpc = RpcInit.initRpc();
        }
     
        public void draw() {
     
                // start the process
                getBibleInfo();
     
        }
     
        /**
         * draw bible info to screen after rpc callback
         * 
         * @param bibleData
         */
        private void drawBibleInfo(GrblData[] grblData) {
     
                // if null nothing to do, then exit
                // this will prevent errors from showing up
                if (grblData == null) {
                        return;
                }
     
                int rows = grblData.length;
     
                // set up the table the bible info will go into. 
                // I already init the grid var above so I can reference it other methods in this instance.
                grid = new Grid(rows+1, 3);
                pBibleTable.add(grid);
     
                Label lLname = new Label("Last name");
                Label lFname = new Label("First name");
     
     
                // tool-tip hover
                lLname.setTitle("Last name of user");
                lFname.setTitle("First name of user");
     
     
                // label row - Starts with 0 ordinal
                grid.setWidget(0, 0, lLname);
                grid.setWidget(0, 1, lFname);
     
     
                // go through the books of the bible
                for (int i = 0; i < rows; i++) {
     
     
                        grid.setWidget(i+1, 0, new HTML(grblData[i].UserLastName));
                        grid.setWidget(i+1, 1, new HTML(grblData[i].UserFirstName));
     
                        // row style
                        boolean even = i % 2 == 0;
                        String style = "";
                        if (even == true) {
                                style = "rs-even";
                        } else {
                                style = "rs-odd";               
                        }
                        grid.getRowFormatter().setStyleName(i+1, style);
                }
     
                grid.setStyleName("grblTable");
     
        }
     
        /**
         * rpc request to get the bible info. 
         * 
         * on return, draw the data to screen
         */
        private void getBibleInfo() {
     
                // draw loading
                loading.show();
     
                // remote procedure call to the server to get the bible info
                rpc.getBibleInfo(new AsyncCallback<GrblData[]>() {
     
                        public void onSuccess(GrblData[] bibleData) {
     
                                // draw bible info
                                drawBibleInfo(bibleData);
     
     
                                // hide loading
                                loading.hide();
                        }
     
                        public void onFailure(Throwable caught) {
                                RootPanel.get().add(new HTML(caught.toString()));
     
                        }
                });
        }
     
     
    }

  5. #5
    Membre expérimenté
    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
    Par défaut
    Citation Envoyé par Jiraf Voir le message
    at lgm.ft.client.GRBLapp.onModuleLoad(GRBLapp.java:32)
    C'est la ligne 32 de la classe GRBLapp qui pose problème. Un null pointer indique que tu utilises une variable qui n'est pas instanciée.

  6. #6
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Merci, j'ai déjà essayé de fix ça et au moins ça permet de passer à l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.google.gwt.user.client.rpc.StatusCodeException: 404
    Ca viendrait de mon web.xml avec notamment les chemin de mon servlet ... J'ai pas mal regardé, repris les exemple que google fournis mais j'arrive pas à comprendre d'où elle vient (si elle vient bien de là).
    Du coup j'ai host mon projet sur googlecode pour que ce soit plus simple ...

    http://code.google.com/p/grbl-lgm/so...e/#svn%2Ftrunk

    En plus, galel, j'ai vu que tu as déjà répondu à ce genre de problème dans un autre topic et j'ai donc bien re-regardé le nom de l'appli ds mon xxx.gwt.xml mais pour l'instant je bloque !

    Je continu à chercher !

  7. #7
    Membre expérimenté
    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
    Par défaut
    Peut-être que la trace complète nous donnerait plus d'information.

    As-tu déjà essayé de faire un appel asynchrone "simple", c'est à dire sans appel à la base et ne retournant qu'un DTO instancié à la main?

  8. #8
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Oui, le simple code que l'on a lorsque l'on crée un nouveau projet GWT propose ça, et ca marchait très bien.

    Sinon qu'est ce que tu appelles "trace complète" ?

    Merci de ton aide =)

Discussions similaires

  1. Novice MySQL : installation client/server
    Par futneguet dans le forum MySQL
    Réponses: 6
    Dernier message: 18/05/2010, 11h47
  2. Connexion Client/Server avec MySQL
    Par Adomi Razaki dans le forum Administration
    Réponses: 1
    Dernier message: 15/05/2010, 09h23
  3. GWT connexion Mysql
    Par Matla69 dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 16/02/2010, 16h52
  4. Réponses: 2
    Dernier message: 26/06/2007, 19h16
  5. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49

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