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

Java Discussion :

Lancer chroniquement un programme java depuis la jvm


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut Lancer chroniquement un programme java depuis la jvm
    Bonjour,

    J'ai besoin de lancer quotidiennement une méthode sur mon application Java de manière automatique. Je pourrais bien sûr utiliser les batch ou le planificateur de tâche windows seulement je ne trouve pas cela très propre et j'ai entendu dire qu'il existait un moyen de spécifier dans le code même du projet que la jvm dois lancer quotidiennement ladite méthode ( la JVM étant renseignée lors du déploiement de l'application ) . Auriez vous une piste?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Euh... Si le programme n'est pas déjà démarré, il peut contenir tout le code que tu veux, ça ne le rendra pas capable de s'appeler lui-même.

    S'il est déjà démarré, batch ou planificateurs ne te seraient pas d'un grand secours (ou en tout cas pas facilement.)

    Bref, si le programme est déjà démarré et passe son temps à attendre que ce soit l'heure :
    Le plus simple est d'utiliser un Timer.
    - Si c'est genre toutes les 24 heures, il suffit de demander une période de répétition de 24 * 60 * 60 * 1000 millisecondes avec scheduleAtFixedRate().
    - Si c'est genre tous les jours à deux heures, il vaut mieux ne pas faire de répétition, et à chaque réveil, calculer la Date du lendemain à deux heures et programmer le prochain réveil à cette date-là.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Je te conseille de jeter un oeil sur Quartz: http://www.quartz-scheduler.org

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut
    Tous d'abord merci beaucoup pour vos réponse .

    La solution du Timer m'est déjà venue a l'idée mais je trouve cette solutions plutôt balourde :"Pourquoi faire tourner un programme 24/24h 7/7J en tâche de fond alors qu'il n'est actif qu'une minutes ou deux sur le mois entier ?" de plus la solution du Timer ne permettrais pas d’exécuter le programme après un reboot du serveur par exemple.

    Bref il me faut l’équivalent d'un batch (ou d'un planificateur de tâche windows), mais plus orienté Java, certe le programme ne peux pas s’appeler lui même mais j'avais entendu dire qu'il était possible que la JVM appelle le programme, et qu'un certain type de code permettais de spécifier cette commande a la JVM lors du déploiement de l'application sur le serveur.

    Mais peut être était ce une légende ^^ (auquel cas c'est une fonctionnalité qui serait a prévoir).

    Quand a Quartz, le projet est intéressant mais le principe reste le même que pour le timer : au lieu de timer mon application, je time quartz qui lance mon application...

    je sais je suis chiant ^^, mais n'y a t'il pas de solutions plus distinguées?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Idleman Voir le message
    certe le programme ne peux pas s’appeler lui même mais j'avais entendu dire qu'il était possible que la JVM appelle le programme
    Euh... Mais encore ? Ce serait une JVM qui tourne comme ça, pour la forme, sans aucun programme Java en cours de route ?

    Ben pas à ma connaissance, non.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Idleman Voir le message
    Je pourrais bien sûr utiliser les batch ou le planificateur de tâche windows seulement je ne trouve pas cela très propre
    Pourquoi ? Cela semble pourtant répondre parfaitement à ton besoin. Non ?

    a++

  7. #7
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    Si cela concerne une application J2EE, je te propose de regarder si le serveur d'applications possède un scheduler et le configurer.

    Sinon c'est ton OS qui doit avoir la charge de réaliser ce que tu souhaites faire...

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2015, 11h06
  2. Lancer un programme Java depuis la ligne de commande
    Par Battant dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 28/07/2014, 23h52
  3. Lancer un programme Java depuis du code C++
    Par K-you dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2010, 18h49
  4. Lancer un programme java depuis un programme java
    Par TheBAT dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 06/01/2007, 16h45
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

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