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 :

[Thread & GWT] Principe de programmation


Sujet :

GWT et Vaadin Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut [Thread & GWT] Principe de programmation
    Bonjour,

    Je m'interroge au sujet de cette technologie, et j'ai notamment une question assez simple mais qui me trotte dans la tête depuis pas mal de temps.

    Si j'ai bien compris, GWT est un framework dans lequel le développeur code en JAVA coté client et serveur. GWT s'occupe de gérer de manière transparente les appels de méthodes (RPC) entre le client et le serveur (en AJAX) et l'interface JAVA-> JS.

    Mais je me posais une question, parce que j'ai du mal à voir comment cela fonctionne coté serveur.

    Coté serveur, est-ce que cela se programme comme un serveur conçu en JAVA classique, c'est à dire, qu'à la même manière qu'on peut "handler" un socket distant dans un thread, là on récupère un appel de méthode et on traite le code (comme dans les programmes classiques en java, on peut lancer des timers, des threads, des synchronized, etc..).
    Ma question va paraître absurde, mais l'exécutable coté serveur...on le lance comment? en ligne de commande ou il doit être forcément ajouté à un serveur TOMCAT par exemple. Est-ce qu'on peut lorsqu'on lance le programme coté serveur, construire nos objets, lancer des threads?)

    Premièrement, veillez excuser mes faibles compétences dans le domaine du Web, mais j'ai été agréablement surpris par cette technologie, et je souhaiterais donc en savoir un peu plus et deuxièmement, merci.

    Cordialement.

  2. #2
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Salut,

    Du coté serveur tu auras une classe qui dérive de HttpServlet, et qui sera intégrée dans un serveur J2EE comme tomcat. Le plus simple pour bien comprendre serait que tu fasse le tutorial, ca te prendra 3h max. Pas besoin d'installer tomcat, gwt fourni un serveur de base pour le développement

    Dans ton projet, il y aura un package client qui sera compilé en JS, et un package server qui sera intégré dans j2ee, et donc tu peut utiliser la jre ou tout autre lib (thread, etc)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    Merci, je vais m'orienter vers ta proposition.
    Le tutorial dont tu parles, c'est celui proposé par Google?

    Je met résolu.

    Bonne journée!

    Cordialement.

  4. #4
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    oui je parle du tutorial de google, présent dans la doc: http://code.google.com/webtoolkit/overview.html

    bonne journée

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    j'ai donc réalisé le tutorial de GWT, et j'arrive donc à implémenter un GWT RPC Service coté serveur.
    Lors des tests, je fais bien dialoguer le client avec le serveur.

    Coté serveur, (dans le package org.fantomasmusic.server) j'ai donc plusieurs classe.

    Je peux ajouter d'autres services, mais je ne trouve pas un point d'entrée (comme un main) qui est lancé lorsque le serveur Tomcat lance mon application serveur.

    En fait, je voulais lorsque je lance mon application sous tomcat, que je lance un thread qui récupère des informations périodiquement. Mais je ne trouve pas ce point d'entrée, si seulement cela est possible sous GWT. Je ne connais pas encore bien l'architecture.

    Cordialement,
    Merci bien.

    ps: désolé de poser des questions aussi bête que ça

  6. #6
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    uh c'est pas des questions betes.

    je crois comprendre qu'il n'y a pas de "point d'entrée" ou de méthode "onLoad" dans une servlet, mais je ne suis pas un developpeur j2ee à la base.

    tu peut demander dans le sous-forum j2ee, ou peut etre que quelqu'un de passage connait la réponse ici.

    ps: ce qui se passe du coté serveur n'a presque plus rien à voir avec gwt. le gros morceau dans GWT c'est le compilateur java->javascript

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 101
    Points : 123
    Points
    123
    Par défaut
    Si tu veux lancer un traitement comme ça, il faut le mettre dans une servlet spécifique et rajouter le lancement de celle-ci dans le web.xml que gwt génère dans ton projet (dossier tomcat)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    D'accord, quand tu parles de servlet spécifique, il suffit de créer un servlet de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MonServletMain extends HttpServlet{
    ...
    }
    En fait je voulais gérer la persistance de mon appli à l'aide de classe JAVA et non d'un BDD. C'est pour ca, en lancant mon application, j'appel le servlet "Main" qui se charge d'initialiser mes objets métiers.

    Du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public MonServletMain(){
            ListeAbonnes = new ListeAbonnes();
            // je veux lancer un thread       
    }

    Ca se trouve, ce que je veux n'est pas possible, parce que tout simplement, j'ai pas bien compris ou s'arrête les possibilités d'un appli web dynamique.


    Bonne journée

    Cordialement,
    Fantomasmusic.

  9. #9
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    En fait je voulais gérer la persistance de mon appli à l'aide de classe JAVA et non d'un BDD
    je n'ai pas bien compris ce que tu veut faire. si tu veut sauver l'état d'une variable entre deux appels d'un service, tu peut utiliser une variable static dans ta classe.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    mamelouk, je pense que mon problème vient du faire que je ne suis pas assez précis, je vais donc développer un peu, ça devrait vous éclairez.

    Contexte
    Depuis 1 mois, je développe une application multi-client/serveur. (on lance un thread pour gérer la connexion d'un client qui traite les requêtes que lui envoi...du grand classique).

    Pour être plus précis, mon application est une plateforme de jeu de bataille navale, c'est à dire qu'il propose un certaine nombre de parties, le joueur peut en rejoindre une, et discuter avec son adversaire. Bref, pour l'instant, c'est du code java pur, sans BDD.

    Existant
    Pour gérer mes batailles j'ai, tout bêtement, une classe PartieManager qui contient une ArrayList<Partie> par exemple. Lorsque je lance mon serveur, la classe PartieManager construit alors plusieurs partie pour qu'elles puissent accueillir des joueurs et l'ajoute à sa liste des parties jouables.

    Les raisons
    Vu que je n'ai pas encore programmé le client, je me dis.. pourquoi ne pas voir si je peux en faire une application web. Et surtout pour comprendre un peu plus la puissance de "J2EE", p-e voir du coté du GWT notamment!


    BUT
    Mon but serait donc:
    - de migrer mon application actuelle en application WEB:
    C'est à dire de remplacer la partie "gestion d'une connexion dans un thread coté serveur" par l'utilisation d'une application web service. Le principe est le même, je veux juste récupérer une action et la traiter et retourner un résultat.
    - garder mes classes métiers

    La vrai question

    Quand je lance une application web sous tomcat, j'aimerais bien pourvoir construire mes objets métier, par exemple ma classe "PartieManager". Je rappel que lorsque je l'instancie, je créé des parties disponibles.
    Lorsqu'un client envoie une requête indiquant qu'il désire rejoindre une partie, je voudrais que dans le traitement de cette requête (par exemple page JSP) je puisse accéder à cette objet.
    En fait, j'aimerais bien avoir un point d'entrée coté serveur pour instancier mes objets métiers pour que mes contrôles "JSP"(par exemple) puissent les utiliser.

    Persistance?
    J'ai utilisé le mot "persistance", je sais que si mon serveur crash, toutes les parties en cours sont perdus. Mais, mon but n'est pas de passer par une base de données. Ça se trouve on ne peut pas faire autrement. C'est pourquoi, mon but est d'avoir une persistance de mes objets métiers.

    Mais les beans?
    Est-ce une solution à mon problème, c'est p-e là la solution, mais il faut simplement dire que le "scope" d'un Bean est de type "application" ou qqch du genre. Mais ma question revient encore: comment initialiser/construire un Bean au lancement du serveur afin qu'il soit accèssible?


    J'espère avoir était plus clair. Désolé pour le pavé monstrueux .

    Bien cordialement,
    fantomasmusic.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/11/2009, 08h34
  2. [GWT + Hibernate] Premier programme.
    Par squall23 dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 22/11/2008, 22h41
  3. Réponses: 4
    Dernier message: 10/09/2008, 23h03
  4. [Principe de programmation] switch / case
    Par dranduncandane dans le forum Design Patterns
    Réponses: 6
    Dernier message: 22/06/2007, 17h25

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