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

Langage Java Discussion :

Timer s'exécutant dans un jar utilisé comme librairie


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 25
    Points : 32
    Points
    32
    Par défaut Timer s'exécutant dans un jar utilisé comme librairie
    Bonjour les pros,

    je voudrais écrire un petit programme qui éxecute un Timer au demarrage. Ensuite, je voudrais exporter ce programme en fichier jar et l'importer dans un projet java web comme librairie. Mais avant je voudrais me rassurer d'une chose:
    - est-il possible de lancer le Timer au demarrage du jar, lorsque le fichier jar est déployé, c'est à dire juste après l'import? Si oui, comment?

    Merci de me donner vos avis et orientations.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    "Juste après l'import"... L'import de quoi ? Un fichier .jar ne s'importe pas, et ça ne veut pas dire grand-chose en général non plus de "déployer" un fichier .jar.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    Bonjour et merci de ta réaction,

    je vais redéfinir mon problème ainsi:
    je voudrais écrire un petit programme constitué des 2 modules suivants :
    - un client REST qui contient une tache en arrière plan chargée de consommer les services et de mettre la BD à jour avec les informations recupérées. j'aimerais que cette tache asynchrone se lance au demarrage du .jar
    - une couche services destinée à exposer les services offerts par mon programme

    Ce petit programme est destiné à être utilisé comme librairie dans une appli web java. Je voudrais donc savoir si il est possible que pendant que ce programme est utilisé comme librairie dans l'appli web, la tache asynchrone puisse démarrer automatiquement.

  4. #4
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Bonjour,

    pour démarrer "automatiquement" un objet au démarrage du programme, le mieux est d'en faire un singleton qui démarre la tâche dans son constructeur. L'appel se fait donc au moment de l'initialisation des champs static, soit au démarrage du programme. Du moins il me semble.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    on va pas comprendre de quoi tu parles.

    "un programme" ou "un site web". C'est l'un ou c'est l'autre. Soit c'est un truc qui s'affiche dans un navigateur, soit c'est un truc sur lequel tu double-cliques et qui affiche sa propre fenêtre sur ton ordi. Mais c'est pas les deux. Alors quoi ?

    Un .jar ça ne démarre pas. C'est un .jar.

    C'est quoi précisément qui te gêne au point que tu aies besoin de te demander si des trucs peuvent démarrer automatiquement ? Les trucs démarrent quand on leur dit de démarrer et c'est parfait comme ça. Pourquoi c'est pas comme ça que tu penses, qu'est-ce qui a provoqué une autre idée que ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    C'est quoi précisément qui te gêne au point que tu aies besoin de te demander si des trucs peuvent démarrer automatiquement ? Les trucs démarrent quand on leur dit de démarrer et c'est parfait comme ça. Pourquoi c'est pas comme ça que tu penses, qu'est-ce qui a provoqué une autre idée que ça ?
    j'ai une application web(Spring, Struts, SOAP, REST,...etc) qui fonctionne très bien. Pour réaliser un de ses services, cette appli web a besoin de consommer une API HTTP. Pour ce faire, j'ai eu pour approche d'écrire le client REST de cette API dans un petit programme indépendant et de l'intégrer comme librairie( .jar) à l'appli web. Mon souhait est que, dans cette librairie il y ai une tache(thread, timer, taskexcecutor, ...etc) lancée en permanence qui exécute des requêtes REST et met à jour la BD...

    j'espère mieux me faire comprendre

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ouaip, là on voit de quoi tu parles.

    Le principe de base, ce serait qu'au démarrage, en plus de ses autres actions au démarrage, ton application appelle une classe de ton .jar. Une classe qui serait en charge de démarrer un thread et de faire ses opérations de background aussi longtemps que l'application est en marche. (Et dans la même veine, dans son code d'arrêt/fermeture, qu'elle appelle le système d'arrêt de ce même thread, sinon ça peut faire des histoires.)

    Et effectivement la classe qui s'occupe de démarrer ce boulot d'arrière-plan peut le faire avec un simple Timer avec période de répétition, ou un ScheduledExecutorService.

    Bon, c'est le principe de base, mais vu que tu utilises Spring, tu devrais regarder si tu peux pas juste faire un @Component dans ton .jar avec une méthode @Scheduled. Après tout le principe de Spring est de s'embarrasser de ces choses à notre place. Exemple ici https://spring.io/guides/gs/scheduling-tasks/
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 25
    Points : 32
    Points
    32
    Par défaut
    Merci de ton suivi @telvin et merci aussi à @Cafeinoman tu as consolidé ce sur quoi j'hésitais un peu.

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

Discussions similaires

  1. Embarquer un exécutable dans un jar
    Par funboard dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/01/2013, 12h33
  2. Exécuter un .exe placé dans un jar
    Par Invité dans le forum Général Java
    Réponses: 5
    Dernier message: 28/09/2006, 12h36
  3. Images dans un jar exécutable..
    Par wariom dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 11/06/2006, 16h52
  4. methode pour exécuter une class dans un jar
    Par yann_p dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2006, 17h47
  5. exécuter une classe dans un jar a partir d'une methode java
    Par yann_p dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 13/04/2006, 15h50

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