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 et les bases de données.


Sujet :

GWT et Vaadin Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut GWT et les bases de données.
    Bonjour,

    Voilà je débute GWT, j'ai acheté le bouquin de Olivier Gérardin pour commencer, mais dans son livre il ne parle jamais de gestion et interaction avec des bases de données! Je pose donc la question, aussi étrange soit elle, GWT doit bien gérer les bases de données?!

    Et ma deuxième question est ce que quelqu'un aurait-il un tutoriel qui explique cela? Un truc tout con me suffirait, genre juste lister le contenu d'une table présente sur MySQL, histoire d'avoir le raisonnement et le code pour se connecter et échanger avec une base de données.
    J'ai fouillé Google mais je ne trouve rien

    Merci de votre aide,
    Adrien.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    Gwt permet de faire des interfaces, ça compile du java en html/css/javascript.
    Au passage ça te permet de communiquer avec un serveur via des services.

    Pour le reste, il n'y a aucune raison que ça gère les bases de données !!

    C'est comme si tu demandais si Swing permet de gérer une base de données

  3. #3
    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
    Dans le livre programmation GWT 2 écrit par Sami Jabber, il explique comment gérer des Pojos qui transitent entre Hibernate et GWT.

    Ca pourrait répondre à tes questions.

    Si tu veux une piste, celle là est la plus pertinante je pense.

    Grosso Modo, il faut communiquer avec le serveur
    http://code.google.com/intl/fr/webto...unication.html

    Côté serveur tu peux faire ce que tu veux, n'importe quelle connexion BDD, tu n'as pas de limitation.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Merci pvoncken, le lien que tu as mis est exactement l'explication de Olivier Gérardin dans son livre... Du coup c'est vraiment basé sur l'utilisation de RPC?

    En fait si je veux utiliser une base de données avec une application GWT je suis obligé d'utiliser Hibernate?

  5. #5
    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
    Comme je disais tu n'as pas de limitation.

    Avec GWT tu fera des appels au Serveur. La méthode d'appel au serveur peut etre du Rpc, du Json ou du Xml. Le plus simple étant le Rpc.

    Une fois que tu es côté Serveur tu peux utiliser toutes les méthode d'accès à la BDD que tu souhaite. hibernate étant ce qui se fait de mieux pour les applications de Gestion. mais tu peux utiliser Jdbc si tu prefere commencer doucement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Ah ok! Ca y est j'ai compris =)

    Pour avoir vu à l'IUT le JDBC (et ayant concervé des cours dans le coin) je vais commencer par là le temps de bien comprendre!

    Merci beaucoup pvoncken!

    A bientôt,
    Adrien.

  7. #7
    Membre confirmé Avatar de baya1
    Inscrit en
    Février 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 112
    Par défaut
    Salut,

    j'ai eu ce même problème il y a un temps, et comme j'était débutante en GWT (et je le suis encore ), j'ai fait pas mal d'erreurs pour utiliser les bd avec gwt. voilà mon post, où tu trouveras les erreurs que j'ai commises et les corrections. http://www.developpez.net/forums/d79...nees-bdd-grid/

    Pour mon cas, j'ai fait la communication avec la base de données via jdbc, et par l'intermédiaire du RPC, car côté client il y a des classes java que je devait utilisé avec la bd et qui ne sont pas prises en compte par gwt, donc il fallait faire tout le travail côté serveur, là où tu peux utiliser toutes les classes que tu veux, ensuite communiquer au client via RPC les résultats de ta bd mais qui sont compatibles avec le client.

    Voilà, j'espère que ça va t'aider

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Merci beaucoup Baya1, ta réponse va beaucoup m'aider je crois, mais là le problème c'est que j'ai un soucis de compréhension du fonction entre l'échange GWT avec ma base de données... Ce fichu GWT ne trouve pas le driver alors que sur une application Java normale tout fonctionne très bien...

    Malheureusement j'aurais pas le temps aujourd'hui de regarder ca donc je le ferais demain!

    Mais ton code à l'air de convenir pas mal à mon problème (et je l'espère! ^^)

    Bonne journée,
    Adrien.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Et bien j'ai vraiment un gros problème, parce qu'il refuse de charger le Driver jdbc!
    J'ai pourtant tester le code d'appel sur un autre petit programme JAVA et il fonctionne très mais une fois dans l'application GWT plus rien ne va...

    Je vous montre le bout de code quand même:

    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
     
    public class AfficherServiceImpl extends RemoteServiceServlet implements
    		AfficherService {
    	private Connection conn;
     
    	@SuppressWarnings({ "unchecked" })
    	public Vector afficherServer(String input) throws IllegalArgumentException {
     
    		System.out.println("Entrée!!");
    		final Vector vect=new Vector();
     
    		try {
    			Class.forName("com.mysql.jdbc.Driver"); 
    		}// try
    		catch (Exception E) {
    			System.err.println("Impossible de Charger le driver.");
    		}// catch
     
    		// interface de connection à BD
    		try {			
    			String url = "jdbc:mysql://localhost/test";
    			conn = DriverManager.getConnection(url, "root", "");
    		}// try
    		catch (SQLException E){
    				System.err.println("SQLexception : "+E.getMessage());
    				System.err.println("SQLState : " +E.getSQLState());
    		}//catch
    J'ai pourtant bien importé mon .jar dans le build path de mon application donc je ne comprends vraiment pas
    Si quelqu'un à une petite elle me serait d'une grande aide.

  10. #10
    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
    Donne nous les logs d'erreurs

  11. #11
    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
    en effet, sans les logs, difficile d'avancer.

    A priori, tu as mis ton code d'accès à la bdd dans la partie serveur.
    Si tu as ajouté dans le classpath, les références aux classes que tu utilises, je ne vois pas pourquoi ça ne marcherait pas.

    Pour le déploiement ultérieur, je te conseille de mettre tes .jar utilisé (et le driver mysql dans le dossier lib de WEB-INF) et de référencer ceux-ci dans ton classpath.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Pour les erreurs,

    Voilà ce qu'il me sort côté application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.google.gwt.user.client.rpc.StatusCodeException: The call failed on the server; see server log for details
    Code d'erreur dans eclipse:
    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
    Entrée!!
    Impossible de Charger le driver.
    SQLexception : No suitable driver found for jdbc:mysql://localhost/test
    SQLState : 08001
    Driver = class sun.jdbc.odbc.JdbcOdbcDriver v2.1
    21 juin 2010 14:17:00 com.google.appengine.tools.development.ApiProxyLocalImpl log
    SEVERE: [1277129820458000] javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
    com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.util.Vector com.madet.gwtChap1.client.AfficherService.afficherServer(java.lang.String) throws java.lang.IllegalArgumentException' threw an unexpected exception: java.lang.NullPointerException
    	at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:326)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Caused by: java.lang.NullPointerException
    	at com.madet.gwtChap1.server.AfficherServiceImpl.afficherServer(AfficherServiceImpl.java:63)
    	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.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
    	... 30 more
     
    Appel!!
    J'ai trouvé une petite fonctions sur le net pour récupérer les driver chargé (d'où le: Driver = class sun.jdbc.odbc.JdbcOdbcDriver v2.1 dans la console) et normalement il devrait me ressortir le com.mysql.jdbc.Driver.

    Donc voilà je suis un peu perdu là...

  13. #13
    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
    J'ai l'impression que tu utilise GAE.

    Tu ne peux pas utiliser jdbc dans un contexte GAE. Il faut utiliser les API de GAE pour les accès à leur base noSql.

    Si tu ne souhaite pas utiliser GAE, désactive le dans les propriété de ton projet.

  14. #14
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    euh, juste au passage, c'est quoi, GAE... ?

  15. #15
    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
    Google App Engine.

    C'est la plateforme de Cloud Computing de Google.

    Entre autre on peut déployer facilement une application GWT sur GAE.

    La contrainte est que dans ce cas, pour persister des données, il faut utiliser leur infrastructure avec une API adapté. Impossible pour le moment d'utiliser Hibernate dessus par exemple.

Discussions similaires

  1. [C#] Lister les Bases de données (SQL SERVER) d'un poste
    Par justice007 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 21/06/2010, 16h10
  2. Gwt et les bases de données
    Par offspring dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 24/09/2008, 17h27
  3. Les bases de données dans un logiciel PRo
    Par LaMusaraigne dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 30/06/2005, 08h18
  4. Livre gratuit sur les bases de données...
    Par benby dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/05/2005, 12h24
  5. Les Bases de Données! tout un monde!!
    Par kikimnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2004, 18h26

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