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 :

Problème RPC entre serveur et client


Sujet :

GWT et Vaadin Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut Problème RPC entre serveur et client
    Bonjour,

    Je viens à vous parce que je suis bloqué. Je vous explique, je souhaite récupérer des informations du côté serveur (liaison jdbc pour visual fox pro, cela marche sans problème sur la console), et les envoyer du c^té client dans une data grid mais je n'y arrive pas ... cela fait 1 mois que je suis dessus, j'ai beaucoup lu sur les forums mais cela ne me débloque pas.

    J'ai ciblé d'où vient l'erreur, c'est un problème de type "http 403" mais cela ne m'aide pas plus

    Pouvez vous m'aider ?



    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Hello,

    Avec ton code ça pourrait aider : GWT.create(Service) + Service + ServiceAsync + ServiceImpl + web.xml

    Maxime

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Ben j'ai suivi un tuto du site "mon premier projet gwt", et donc oui j'ai bien créer les "bouts" de code là où il fallait mais je ne comprends pas pk cela ne veut pas marcher

    J'ai bien une instance de création dans le "main" avec les interfaces là où il faut + implémentations de ces interfaces + déclaration dans le web.xml.

    Ne connaissez vous pas un article, site où ce genre de problème a été traité ?

    Le but est d'afficher à l'écran dans un datagrid des informations récoltées dans la base de données.

  4. #4
    Membre expérimenté
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Par défaut
    Salut, tu as un problème d'authentification visiblement. Je commencerais par regarder du côté de la configuration du serveur...
    Tu peux m'en dire plus sur ton architecture ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Niveau serveur, ben c'est le serveur interne à GWT, je n'ai pas cherché à le déployer encore.

  6. #6
    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
    Comme le dit Maxime, sans ton code il nous est difficile de t'aider.

  7. #7
    Membre expérimenté
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Par défaut
    Citation Envoyé par vittel Voir le message
    Niveau serveur, ben c'est le serveur interne à GWT, je n'ai pas cherché à le déployer encore.
    Donc, si j'ai bien compris, tu as des WebServices RPC sur un serveur VFP que tu cherches à atteindre avec ton serveur Jetty de GWT. C'est bien ça ?
    Tu lis une erreur 403 à quel endroit ? Dans ton navigateur ? Dans les logs de Jetty ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Désolé de répondre avec des jours de retard mais j'ai eu un problème sur mon pc qui m'a forcé à le reformater

    J'ai recommencé à coder la partie serveur ce matin dont voici le code :
    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
    public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService {
     
    	//le code de base de gwt
    	public String greetServer(String input) throws IllegalArgumentException 
    	{
    		// Verify that the input is valid. 
    		if (!FieldVerifier.isValidName(input)) 
    		{
    			// If the input is not valid, throw an IllegalArgumentException back to
    			// the client.
    			throw new IllegalArgumentException(
    					"Name must be at least 4 characters long");
    		}
     
    		String serverInfo = getServletContext().getServerInfo();
    		String userAgent = getThreadLocalRequest().getHeader("User-Agent");
     
    		// Escape data from the client to avoid cross-site script vulnerabilities.
    		input = escapeHtml(input);
    		userAgent = escapeHtml(userAgent);
     
    		return "Hello, " + input + "!<br><br>I am running " + serverInfo
    				+ ".<br><br>It looks like you are using:<br>" + userAgent;
    	}
     
    	/**
             * Escape an html string. Escaping data received from the client helps to
             * prevent cross-site script vulnerabilities.
             * 
             * @param html the html string to escape
             * @return the escaped string
             */
    	private String escapeHtml(String html) 
    	{
    		if (html == null) {
    			return null;
    		}
    		return html.replaceAll("&", "&amp;").replaceAll("<", "&lt;")
    				.replaceAll(">", "&gt;");
    	}
     
    	//mon bout de code pour récupérer les informations
    	public static void main (String [] args)
    	{
    		try 
    		{
    			      // load the driver into memory
    			      Class.forName("jstels.jdbc.dbf.DBFDriver2").newInstance();
     
    			      System.out.println();
    			      System.out.println("Chargement du driver dans la mémoire : ok");
    			      System.out.println();
     
    			      // create a connection. The first command line parameter is assumed to
    			      // be the directory in which the .dbf files are held
    			      //Connection conn = DriverManager.getConnection("jdbc:jstels:dbf:" + args[0]);
    			      Connection conn = DriverManager.getConnection("jdbc:jstels:dbf:cache://classpath://resources" );
     
    			      System.out.println();
    			      System.out.println("Création d'une connexion : ok");
    			      System.out.println();
     
    			      // create a Statement object to execute the query with
    			      Statement stmt = conn.createStatement();
     
    			      System.out.println();
    			      System.out.println("Création d'une déclaration pour l'exécution de la requête : ok");
    			      System.out.println();
     
    			      // execute a query    
     
    			      ResultSet rs = stmt.executeQuery("SELECT * from \"C:/Users/pelican/Downloads/vue_tiers_xx.dbf\"");
     
    			      System.out.println();
    			      System.out.println("Requête : ok");
    			      System.out.println();
     
     
    			      // read the data and put it to the console
    			      for (int j = 1; j <= rs.getMetaData().getColumnCount(); j++) 
    			      {
    			        System.out.print(rs.getMetaData().getColumnName(j) + "\t");
    			      }
    			      System.out.println();
     
    			     String p="";
    			      while (rs.next()) 
    			      {
    			        for (int j = 1; j <= rs.getMetaData().getColumnCount(); j++) 
    			        {
    			        System.out.print(rs.getObject(j) + "\t");
    			        //  p+=" " + (rs.getObject(j));
     
     
    			        }
    			        //System.out.println(p);
    			        System.out.println();
     
    			      }      
     
    		    // close the objects
    			      rs.close();
    			      stmt.close();
    			      conn.close();
     
    			      System.out.println();
    			      System.out.println("connexion à la bdd réussi");
    			      System.out.println();
     
    			    }
    			    catch (Exception e) 
    			    {
    			      e.printStackTrace();
    			    }
    	}
     
    }
    De là, les informations s'affiche bien sur la console, mais je reviens au même problème qu'il y a quelques jours quand j'ai sollicité votre aide ... Quelqu'un peut-il m'aider à récupérer que j'ai récupéré du fichier provenant de la base de données et les afficher dans un data grid ? Je lui en serai très reconnaissant parce que je ne vois pas du tout comment faire . Merci d'avance

  9. #9
    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
    Sauf erreur de ma part il n'y a que la partie serveur dans l'extrait de code que tu nous livre.
    Utilises la balise CODE, et donne un extrait de la partie cliente appelant le service.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Oui oui il n'y a que la partie serveur là, je n'ai pas avancé depuis, je ne sais pas comment faire

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    Bonjour à tous,

    J'ai réussi à débloquer le problème du RPC, j'arrive désormais à faire passer les messages RPC.

    J'ai un petit problème maintenant, j'aimerai afficher à l'écran un grid qui m'affiche les données mais je ne sais pas vraiment comment faire... Les données sont affichées pour le moment dans un HTML, je sais c'est "sale" mais je voulais savoir si cela marchait. voici mon code, je récupère les informations sous forme d'une ArrayList dans la partie serveur qui elle-même me renvoie une List dans le callback du RPC :

    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
     
    click.addClickHandler(new ClickHandler() 
    		{
    			public void onClick(ClickEvent event) 
    			{
    				sendNameToServer();
    			}
    			private void sendNameToServer() 
    			{
    				String textToServer = null;
    				greetingService.greetServer(textToServer, new AsyncCallback<List>() 
    				{
    					public void onFailure(Throwable caught)
    					{  
    					}
     
    					@Override
    					public void onSuccess(List result) {
    						test.setText("");
    						for (int i=0; i<result.size(); i++)
    						{
    							Donnees don = (Donnees) (result.toArray()[i]);
    							test.setHTML(test.getText() + don.getUn() + " "+ don.getDeux() + " "+ don.getTrois() + " "+ don.getQuatre() + " "+ don.getCinq() + " "+ don.getSix() +" " + don.getSept()   +" nouvelle ligne ");
    						}
    						//test.setText(((Donnees)(result.toArray())[0]).getCinq());
     
    					}
    				});
    			}
    		});


    Donnees est un bean tout simple avec ses getters et setters.

    Merci de votre aide

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut
    Il te suffit d'utiliser un widget, composant graphique fournit par GWT qui réponde à ton besoin :
    CellTable, CellList ou Datagrid...

    Il y a pas mal d'exemples sur internet et sur le site officiel de GWT afin de savoir comment utiliser ce type de composant, widget.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2015, 18h06
  2. Protocole - échange de données entre serveur et clients
    Par karistouf dans le forum Réseau
    Réponses: 8
    Dernier message: 14/09/2008, 19h13
  3. Connexion entre serveur et client
    Par ledawa dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 21/05/2008, 18h41
  4. Problème communication sockets serveur mutli-client
    Par muad'dib dans le forum Réseau
    Réponses: 5
    Dernier message: 17/05/2007, 02h21
  5. Réponses: 16
    Dernier message: 01/03/2007, 17h31

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