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 :

Application coté Serveur


Sujet :

GWT et Vaadin Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut Application coté Serveur
    Bonjour, oui je continue à découvrir

    j'ai vue le système de communication par RPC
    il appel un service coté serveur

    j'aurais voulut avoir un programme qui tourne coté serveur avec qui communiquer, et pas juste pouvoir lancer un service à la demande du client GWT.

    Il me faut faire un autre Programme autonome communiquant en TCP/IP? Ou il est possible de concevoir le serveur communiquant directement avec les services ?
    la directement je ne vois pas comment exécuter un serveur avec un Projet GWT.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    j'ai trouvé une solution mais je ne suis pas sur que ça soit une méthode correcte

    j'ai crée un singleton qui est appelé par le service RPC, le singleton est initialisé coté serveur, ça marche quand j'ai deux appel aux service le singleton reste unique, même avec deux navigateurs différents

    j'ai donc un point d'entrée pour mon programme coté serveur

    ce n'est pas parfait mais c'est un bon debut

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    J'ai une autre question, au lieux de faire un poste a chaque fois je vais continuer ici

    je cherche à faire communique le serveur et le client quasiment en temps réel.

    C'est à dire que le serveur doit communiquer au client ce qu'il se passe quasiment en temps réel et pas uniquement quand le client le veux bien.

    je vois bien que la communication RPC n'est pas faite pour ça, y a t'il une méthode native pour ça ? je vois pas trop comment coder une interface TCP/IP coté client

    Question
    un appel a un RPC est asynchrone
    le serveur ne peu-t-il pas appeler plusieurs fois le callback ?

    je pense que j'ai trouvé ce que je cherche
    http://xmpp.org/extensions/xep-0124.html

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    L'idée est simple

    le client fait une requête RPC mais le serveur n'y répondra que quand il aura quelque chose a dire, la requête reste donc en attante passive coté client

    un deuxième canal permet au client d'envoyer des informations au serveur

    pour implémenter ce type de communication je suppose qu'il faut suspendre la servelette en attente d'avoir quelque chose a dire, ça ne risque pas d’être limitant quand on a plusieurs connexion simultané ? je vais essayer d’implémenté ça ce soir... on trouve des implémentation comme Emite pour avoir un client communiquant avec un serveur xmpp mais je n'ai pas vu de serveur coté GWT il y a un moyen d'utiliser les RPC pour simuler ce type de connections ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    Ca fonctionne
    j'ai codé un objet qui permet la pose des threads sur lui

    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
     
    public void waiting () {
    		waintingCount ++;
    		try {
    			synchronized(this) {
    				System.out.println("wait");
    				wait(); // on attent
    				System.out.println("Retour");
    			}
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			System.out.println("Erreur");
    			e.printStackTrace();
    		}
    	}
     
    	public void wakeup () {
    		if (waintingCount > 0) {
    			waintingCount --;
    			synchronized(this) {
    				notify ();
    			}
    		}
    	}
    ca fonctionne le premier appel se mette en pause et il est réveillé par le deuxième

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    Allez j'ai une question
    je souhaite utiliser le module XML
    j'ai donc importer le module en ajoutant la déclaration dans le xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <inherits name='com.google.gwt.xml.Xml'/>
    et il me dit ça ...

    [ERROR] Unable to find 'com/google/gwt/xml/Xml.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
    [ERROR] Line 5: Unexpected exception while processing element 'inherits'
    com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.cfg.ModuleDefLoader.nestedLoad(ModuleDefLoader.java:278)
    at com.google.gwt.dev.cfg.ModuleDefSchema$BodySchema.__inherits_begin(ModuleDefSchema.java:495) ...

    je suis aller voir dans les modules importé ils y a bien un module
    com.google.gwt.xml dans le lot du coup je ne comprend pas ce qu'il veut

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    bon j'ai trouvé ... mais faut m'expliquer pourquoi cette ecriture fonctionne

    <inherits name="com.google.gwt.xml.XML" />
    et pas celle la
    <inherits name='com.google.gwt.xml.XML'/>

    alors que le module de base
    <inherits name='com.google.gwt.user.User'/>
    se charge avec le nom entre ''

    je suis une truffe j'avais écrit <inherits name='com.google.gwt.xml.Xml'/>
    et non pas <inherits name='com.google.gwt.xml.XML'/>

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    Bonjour a tous je reviens avec une question d'un autre genre

    je cherche a faire un widget personnalisé
    et pour se faire je voulais dessiner dessus

    j'ai hérité d'un AbsolutePanel et je voulais le quadrillé, mais je ne vois pas trop comment dessiner dans le widget

    et la pour le coup le bouquin n'en parle pas (le livre GWT de Damien PICARD)


    en cherchant sur le net on trouve la lib JS
    wz_jsgraphics.js j'ai trouve quelqu'un qui a dit s'en servir avec GWT quelqu'un aurait-il déjà fait ça ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    quelqu'un aurait une idée pour quadriller un widget ?

    pour le moment le widget est un absolute panel

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    j'ai penser a ajouter un tableau dan un Div pour faire mon quadrillage, c'est une bonne idée ou c'est a éviter ?

  11. #11
    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
    une idée en passant la classe Canvas provenant du HTML5....

    j'avais cru lire quelque part que pour dessiner, il fallait l'utiliser !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    j'ai trouver la solution

    import com.google.gwt.canvas.client.Canvas;

    avec les canvas il est possible de dessiner simplement
    un petit exemple ici http://www.giantflyingsaucer.com/blog/?p=2338

    ---- Edit ----
    lol j'ai pris trop de temps pour poster merci en tous cas
    les possibilités sont très intéressante

  13. #13
    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
    Pour faire tourner un service sur le système, ta solution en est une.

    Il me semble qu'elle nécessite néanmoins un premier appel depuis le client, n'est-ce pas ?

    Pour ce qui est du singleton, est-ce un singleton classque car en environnement multithread, il peut ne plus être unique.
    Un moyen facile de le rendre threadsafe, c'est de ne pas faire un test sur la nullité de la variable statique privée mais d'initialiser cette variable static privée en faisant un appel au constructeur privé puisque ceci se fera au chargement de la classe qui lui est threadsafe.

    Une autre solution, c'est d'utiliser le listener de context du serveur d'application. A la création du contexte, tu crée le singleton. A la destruction du contexte, tu le libères. Après, dans le service RPC, tu peux récupérer le contexte et donc le singleton.


    Pour la communication web, par défaut, elle est à l'initiative du client. Après pour faire dans l'autre sens, il y a plusieurs solutions.
    Il y a le pooling et différentes variantes, celle consistant à mettre un timer côté client pour relancer une action de vérification régulièrement, celle consistant à bloquer une requête http et de la maintenir ouverte (comme comet).
    Une dernière solution serait d'utiliser les websockets de html5.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    merci beaucoup pour tes réponses j'avais il est vrai l'impression de monologué

    pour le singleton oui effectivement il faut un premier appel pour initialiser le coté serveur

    Une autre solution, c'est d'utiliser le listener de context du serveur d'application. A la création du contexte, tu crée le singleton. A la destruction du contexte, tu le libères. Après, dans le service RPC, tu peux récupérer le contexte et donc le singleton.
    je dois avouer que je ne comprend pas trop ce que tu veux dire...

    pour la communication j'ai essayé de voir si on peu gérer soit même les appel ajax coté serveur pour éviter de faire un wait sur le thread mais pour le moment je n'ai pas trouvé comment faire... pour le moment ça marche avec un wait ...

    pour le moment je suis dans l'utilisation du canvas

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 68
    Par défaut
    je cherche a faire quelque chose de basic : récupérer la dimension d'un SimplePanel
    pour redimensionner le canvas qui est dedans afin qu'il prenne toute la place disponible

    je me suis fait toute la doc du SimplePanel, du Panel, du UIObject, de l’élément

    pour le moment tous les getQuelqueChose donne 0
    c'est désespérant

    dans le canvasElement il y a un getHeight mais en allant voir le code on trouve


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      /**
       * Gets the height of the canvas.
       * 
       * @return the height, in pixels
       * @see #setHeight(int)
       */
      public final native int getHeight() /*-{
        return this.height;
      }-*/;
    J'ai trouvé c'est au layout de gérer la taille des éléments qui le compose c'est donc dans le DockLayoutPanel qu'il fallait chercher dans mon cas,
    bon j'ai dut surcharger celui ci car les get sont protected, mais bon ce n'est pas très grave

    cela donne aussi accé à la methode onResize qui est importante pour redimensionner l’élément, par contre a l'initialisation la taille est vide

Discussions similaires

  1. Hébergement application dart coté serveur
    Par Andarus dans le forum Dart
    Réponses: 2
    Dernier message: 17/12/2014, 15h34
  2. Réponses: 5
    Dernier message: 09/02/2013, 10h10
  3. Réponses: 2
    Dernier message: 01/10/2002, 12h25
  4. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13
  5. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46

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