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 :

Lancement méthode périodique sur serveur


Sujet :

GWT et Vaadin Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut Lancement méthode périodique sur serveur
    Bonjour,

    Ma question est toute simple mais reste assez ambigue dans ma tête...

    Si je lance mon application et qu'elle appelle un service sur le serveur qui exécute un timer avec une période, est ce que ce service sera toujours en exécution si j'arrête mon client?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Tout dépend du serveur et du service derrière.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Mon service fait un calcul et met à jour une base de données toutes les X secondes. Mon serveur est un Tomcat.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ce que je veux dire, c'est que le comportement dépendra du code qui est derrière ton service, on peux pas te répondre comme ça. Et la question de base toute bete
    "t'as essayé pour voir?"

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Je n'ai malheureusement pas le matériel pour le moment pour séparer mon client de mon serveur.
    Du coup, je vais reformuler ma question autrement : est ce qu'il est possible de lancer une méthode côté serveur sans que la classe qui implement EntryPoint ne soit lancée?
    Ou en gros si je peux faire une appli GWT purement côté serveur.
    Je ne sais pas si je suis très clair

    Merci

  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
    Citation Envoyé par CcHhUu Voir le message
    est ce qu'il est possible de lancer une méthode côté serveur sans que la classe qui implement EntryPoint ne soit lancée?
    oui

  7. #7
    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
    Points : 4 265
    Points
    4 265
    Par défaut
    comme dit tchize, tout dépend de ce que fait ton code ...

    Réponse avec suppositions :

    Appel RPC ou non, une servlet vas être appelée ... ( les servlets sont généralement partagées donc attention à la concurrence si tu utilises des variables d'instances)
    Si tu fais un traitement (code dans le corps de doGet, de doPost ou dans le corps de ta méthode RPC), il commence à l'arrivée de la requête et se termine à l'envoi de la réponse ...

    Maintenant, si dans ce code, tu lances un autre thread, sauf erreur de ma part, il continuera de "tourner" même après la réponse au client.
    Enfin, quand, je dis qu'il continue de tourner, il s'execute en "parallèle" jusqu'à sa fin "programmé".

    Autrement dit, si dans ton thread, tu fais un print i dans une boucle où i va de 1 à 10, parfois, i aura atteint 10 avant la réponse, parfois après mais dans les deux cas, il sera terminé une fois arrivé à 10.
    Si c'est une boucle infinie "brutale" while(true) ou moins brutale (soumis à une condition d'arrêt peu fréquente), le thread ne se terminera que lorsque tu auras fait un break;/return dans la boule infinie "brutale", un "je passe ma condition d'arrêt à true" dans le deuxième cas.

    Il pourra être également arrêter dans le cas d'un System.exit() ou de l'arrêt du Tomcat.

    Est-ce que ce thread sera arrêter à l'arrêt seul de l'application web (le tomcat continue de tourner) ? Je n'ai jamais fait le test. Si je devais dire une réponse, je dirai que non ? Comme les applications web peuvent avoir leur propres librairies, peut êtres ont t'elles leur groupe de thread ?

    Je laisse à ceux qui le savent le soin de partager leur lumières

  8. #8
    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
    Il me semble qu'il a besoin d'un bon vieux crontab qui appelle une de ses classes, mais comme on ne sait pas ce qu'il veut faire, difficile de répondre

  9. #9
    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
    Points : 4 265
    Points
    4 265
    Par défaut
    Citation Envoyé par CcHhUu Voir le message
    Je n'ai malheureusement pas le matériel pour le moment pour séparer mon client de mon serveur.
    Du coup, je vais reformuler ma question autrement : est ce qu'il est possible de lancer une méthode côté serveur sans que la classe qui implement EntryPoint ne soit lancée?
    Ou en gros si je peux faire une appli GWT purement côté serveur.

    Là, la question est différente.
    Moi, je pensai que ton client lançait un truc sur le serveur puis se barrait ...

    Comme je ne pourrai pas faire une réponse aussi concise que celle de mamelouk je te ferai remarquer qu'une appli GWT purement côté serveur, ça ne veut pas dire grand chose car côté serveur, c'est du Java classique !
    Le seul truc que GWT amène côté serveur, c'est sa servlet pour le RPC qui n'a que peu d'intérêt s'il n'y a pas de partie cliente qui l'appel.

  10. #10
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    En fait j'aurais voulu utiliser certaines classes de GWT côté serveur.

    Donc je pensais créer un projet sur mon serveur. Mais je voudrais que ce projet côté serveur tourne même sans que j'ai un navigateur de lancé parce qu'il n'y aura pas d'IHM mais juste quelque méthode qui feront des calculs et des enregistrements en base de données.

    En gros, est ce qu'il est possible de lancer une application sans lancer son point d'entrée?

    Merci

  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
    Points : 4 265
    Points
    4 265
    Par défaut
    Citation Envoyé par CcHhUu Voir le message
    En fait j'aurais voulu utiliser certaines classes de GWT côté serveur.
    Quelles classes ?

    Citation Envoyé par CcHhUu Voir le message
    Donc je pensais créer un projet sur mon serveur. Mais je voudrais que ce projet côté serveur tourne même sans que j'ai un navigateur de lancé parce qu'il n'y aura pas d'IHM mais juste quelque méthode qui feront des calculs et des enregistrements en base de données.
    En gros, est ce qu'il est possible de lancer une application sans lancer son point d'entrée?
    Oui, tu peux faire ce que tu veux côté serveur mais cela reste du java classique !
    Je ne vois pas pourquoi tu parles de classes de GWT ?
    La grosse parties de leur classes, c'est pour faire une ihm en javascript et tu n'en a donc pas besoin si tu n'as pas d'ihm ?

    Le besoin que tu exprimes est clair mais son mélange avec GWT ne l'est pas

  12. #12
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    C'est vrai que ça peut paraitre un peu bizarre mais j'ai développé une méthode à partir de la classe DateUtil de gwt-ext et pour des raisons de respect du modèle MVC je dois passé cette partie de traitement côté serveur. Et du coup au lieu de tout redévelopper avec java.util.Date qui ne propose pas certaines méthodes comme getFirstDayOfMonth par exemple, je cherchais à réutiliser mon dev et à le passer pour qu'il s'execute sur mon serveur.

  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
    Points : 4 265
    Points
    4 265
    Par défaut
    Sous prétexte de respecter un pseudo MVC, tu veux faire un truc encore plus moisi !

    La solution la plus propre, c'est que tu refasses ta méthode en utilisant java.util.Date (côté serveur / pur java), ça doit pas casser trois pâtes à un canard.


    Au lieu de ça, tu as une méthode qui utilise DateUtil de gwt-ext (framework abandonné et wrapper de JS )
    Bref, passons
    Une fois compilé avec GWT, tu as du javascript !

    Et maintenant, tu nous dis que dans un autre projet Java (côté serveur), tu veux réutiliser ce code javascript (n'oublie pas que tu n'as plus les classes Java ! sinon il te faudrait un décompilateur GWT qui fasse le processus inverse ! )

    La seule façon de faire (et je me demande même pourquoi j'ose te le dire !!!), ça serait avec du code Java executer du code javascript sur le serveur, il existe probalement des libriaires mais c'est autrement plus poilu !

    Tu te rends mieux compte maintenant ?

  14. #14
    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
    Points : 4 265
    Points
    4 265
    Par défaut
    Pour information, au sujet du MVC.

    Les composants de GWT, c'est principalement pour faire ta vue.
    Et hormis le cas où la vue est construite sur le serveur, le serveur ne doit pas connaître le code de ta vue.

    Si tu dois passer du code de GWT (code client) au serveur, c'est qu'il s'agit de code appartenant au modèle.

    Là, c'est possible d'avoir du code côté client et de le réutiliser côté serveur.
    Ce code devrait se trouver dans un package "data" ou équivalent (voir la fin de ce message), car comme je l'explique, il devra être à la fois compilé en javascript par GWT et en bytecode par java.

    Ce package data n'est pas obligatoire mais il éclairci mieux les problémes !
    Comme du code java serveur ne peut pas être transformé en javascript,
    il y a le pendant, du code java client (javascript) qui ne peut pas être transformé en bytecode.
    Ce package data ne devrait donc faire référence qu'à des classes transformable en bytecode, ce qui exclue toutes les widgets qui manipulent le DOM.

Discussions similaires

  1. lancement de tomcat sur serveur
    Par touille dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 04/08/2008, 14h32
  2. Probléme de méthode webdav sur Serveur exchange
    Par djorfe dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 18/03/2008, 14h55
  3. Lancement fichier.jar sur serveur
    Par JohnNC dans le forum Langage
    Réponses: 2
    Dernier message: 12/03/2008, 14h35
  4. Réponses: 0
    Dernier message: 07/02/2008, 11h26
  5. [SQL] Lancer requetes SQL périodiquement sur serveur mysql (easyphp)
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/12/2007, 12h33

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