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

Spring Java Discussion :

Redémarrer un job


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut Redémarrer un job
    Bonjour,

    Il y a deux semaines, on m'a demandé de travailler sur une application utilisant Spring Batch. Après avoir bien lu la doc de Spring Batch, les tutos et compris le fonctionnement de l'application, on m'a demandé :
    -Dans un premier temps, d'avoir une interface graphique permettant de relancer les jobs ayant échoué lors de leur execution (FAILED) à partir de l'endroit où ils ont planté/ou alors reprendre le traitement depuis le début.
    -Dans un second temps, on devra pouvoir relancer un job FAILED que sous certaines conditions (ex: on relance un job que s'il a eu un problème pour lire un fichier ect)

    Mon problème : je ne sais pas par où commencer, je n'ai pas la moindre idée de comment m'y prendre...

    J'ai cru comprendre qu'il fallait rajouter l'attribut restartable=true au job (ce que j'ai fait), puis dans le code, récupérer les jobs failed, mais je ne sais pas où et comment les recuperer.
    Je suppose en base, mais je ne vois meme pas où sont faites les insertions dans les tables de batch.
    C'est un peu flou pour moi. Auriez-vous un exemple concret : lancement de plusieurs jobs, un échoue, ensuite, vous avez un lien sur une interface 'Redemarrer les jobs en échec', ce lien appelle une méthode qui va voir en base, puis récupère le job instance et je suppose le job execution. Puis relance le job.


    Je n'ai pas trop de temps pour développer cette fonctionnalité, alors je panique un peu sachant que je ne pense pas avoir toutes les notions...

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Par défaut
    Tu es sûr que tu as bien lu?

    http://static.springsource.org/sprin...ml#failElement

    Si spring-batch ne te permet pas de faire ce que tu veux, n'hésite pas étendre ses classes où carrément les reprendre dans ton projet pour les modifier.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    @samSer :Merci, donc le lien vers la doc que tu m'as envoyé va me permettre de déterminer si le job va pouvoir être redémarrer ou non en fonction du exitstatus?

    Mais je ne comprends pas : comment récupérer les job instances et execution d'un job FAILED? Puis les relancer?
    Au départ je voudrais juste :
    -récuperer des jobs qui ont FAILED (peu importe le step où ils ont échoués), puis relancer leur execution depuis le debut)

    @aymen83 :
    Je regarde dès que j'ai a nouveau de la dispo et je reviendrais poster.

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Par défaut
    C'est un peu plus bas:
    http://static.springsource.org/sprin...cFlowDecisions

    le step est dans ton job donc tu n'as pas à te casser la tête pour tenter de récupérer quoi que ce soit...

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    Merci

    Un peu plus de précisions :

    Voici le code qui lance mes jobs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public File launchJob(File input) throws JobExecutionException {
    		try {
    			// Recherche du job
    			Job job = getJob(input.getName());
    			JobParameters params = createJobParameters(input);
    			// Lancement effectif
    			JobExecution je = jobLauncher.run(job, params);
     
    		} catch (Exception e) {
    			log.error("job plante : ", e);
    		}
    	}
    Avec getJob() qui récupère le fichier de conf de mon job :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ctx.setConfigLocation(String.format(
    					"classpath:META-INF/flux/job-%s.xml", flux));
    Comment à cet endroit, récupérer les jobs failed?

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 51
    Par défaut
    Dans ton fichier xml peut-être?

    EDIT: Tout est dans la doc, je ne vois pas ce que tu ne comprends pas...

  7. #7
    Membre expérimenté Avatar de aymen83
    Inscrit en
    Décembre 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 271
    Par défaut
    Citation Envoyé par boulet38 Voir le message
    Merci

    Un peu plus de précisions :

    Voici le code qui lance mes jobs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public File launchJob(File input) throws JobExecutionException {
    		try {
    			// Recherche du job
    			Job job = getJob(input.getName());
    			JobParameters params = createJobParameters(input);
    			// Lancement effectif
    			JobExecution je = jobLauncher.run(job, params);
     
    		} catch (Exception e) {
    			log.error("job plante : ", e);
    		}
    	}
    Avec getJob() qui récupère le fichier de conf de mon job :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ctx.setConfigLocation(String.format(
    					"classpath:META-INF/flux/job-%s.xml", flux));
    Comment à cet endroit, récupérer les jobs failed?
    je ne comprend pas exactement ce que tu veux faire par ce code mais dans l'objet JobExecution il y a paramètre qui te permet de reconnaitre le status avec lequel le job a terminé sont exécution (FAILED, UNKNOWN.....)

  8. #8
    Membre expérimenté Avatar de aymen83
    Inscrit en
    Décembre 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 271
    Par défaut
    Citation Envoyé par boulet38 Voir le message
    -Dans un premier temps, d'avoir une interface graphique permettant de relancer les jobs ayant échoué lors de leur execution (FAILED) à partir de l'endroit où ils ont planté/ou alors reprendre le traitement depuis le début.
    pour l'interface les gars de spring batch ont développé une extension de springbatch qui s'appel spring-batch-admin qui te permet monitorer tes batchs.

    -Dans un second temps, on devra pouvoir relancer un job FAILED que sous certaines conditions (ex: on relance un job que s'il a eu un problème pour lire un fichier ect)
    si tu configure ton job comme restartable, eh bah!! normalement si son status d'exit est failed alors à la prochaine exécution il reprendra là ou il a terminer la dernière fois à condition que les tables propres à spring batch soient créer dans une bd et non en mémoire

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 3
    Par défaut
    Citation Envoyé par aymen83 Voir le message
    pour l'interface les gars de spring batch ont développé une extension de springbatch qui s'appel spring-batch-admin qui te permet monitorer tes batchs.



    si tu configure ton job comme restartable, eh bah!! normalement si son status d'exit est failed alors à la prochaine exécution il reprendra là ou il a terminer la dernière fois à condition que les tables propres à spring batch soient créer dans une bd et non en mémoire
    Apparamment t'as l'air de t'y connaître pourrais-tu m'expliquer comment ca marche stppppppppppppppp ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/11/2012, 13h11
  2. Conserver et retrouver une connexion sans arrêter et redémarrer le job
    Par pop_up dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 04/05/2012, 15h41
  3. Infos jobs
    Par Colargole dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2003, 11h09
  4. Etre notifié de l'ajout d'un job dans le spooler
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 12/11/2003, 21h52
  5. redémarrer un prog à partir d'un bouton
    Par yokito dans le forum Langage
    Réponses: 5
    Dernier message: 06/09/2002, 13h19

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