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 :

Incidents Traitements Batch J2EE


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut Incidents Traitements Batch J2EE
    Bonjour,

    Pourriez-vous m'aiguiller sur le problème suivant :

    Contexte :
    Nous utilisons le logiciel(ordonnanceur) Dollar Univers pour lancer des traitements Batch J2EE (traitement qui met … jour une base
    de donn‚es DB2 … partir d'un fichier s‚quentiel.txt).
    Ces traitements batch J2EE sont cod‚s sur Websphere Studio Application Developper V4.

    Le principe est le suivant: (Lien entre Dollar U et l'application J2EE)
    Dans le traitements J2EE, on initialise une variable code retour … '0'. Lors du traitement, si on rencontre une exception,
    celle-ci est catch‚e et on valorise le code retour … '1'. L'application J2EE s'arrˆte alors anormalement.
    Le code retour est envoy‚ … Dollar Universe qui fait un traitement sp‚cifique lorsqu'il re‡oit un code retour 1.
    Dollar Universe ne sait g‚rer dans notre cas qu'un code retour 0 ou 1.
    Il s'agit de traitements quotidiens.

    Problème :
    Il arrive parfois, que Dollar Univers plante et affiche un message avec le code retour suivant : -143 ou -1073741819
    Ces plantages surviennent al‚atoirement. La fréquence va de moins de 1 fois par mois … 1 fois en 15 jours.
    Deplus lorsque le traitement plante, celui-ci repasse le lendemain, dans les mˆmes conditions, avec les mêmes données, et l…, il se termine correctement.
    Les données non trait‚es le jour du plantage, sont donc trait‚es le lendemain. Ce qui fait que ce problŠme n'est pas Bloquant, mais Génant.
    Il n'est donc pas possible de reproduire le plantage dans notre environnement de test.

    Pour informations :- Il s'agit de traitements de production, nous ne pouvons donc pas modifier le code J2EE pour faire des tests.
    - Il est impossible de reproduire un plantage en environnement de d‚veloppement ou Recette car ceci ne sont pas identiques … celui de production.
    - Nous ne pouvons pas augmenter le niveau de d‚tails des Logs, car ceci ralenti trop le temps de traitement.
    - Nous ne pouvons pas pr‚voir quand le prochain plantage se produira.
    - Ce cas ne s'est jamais produit en environnement de d‚veloppement ou de recette.

    Pistes étudiées :
    1/ Une exception non g‚r‚e dans l'application J2EE. -> il faudrait pour chaque bloque Try Catch, faire un catch de toutes les exceptions.
    2/ Un oubli de valorisation du code retour envoy‚ … Dollar Universe.
    3/ Conflit lors d'un multiThread.
    4/ ProblŠme r‚seau
    5/ ProblŠme serveur
    6/ ....

    Merci d'avance pour vos r‚ponses.

    Ci-joint quelques logs obtenus lors des plantages décrit précédemment :

    Exemple 1 :
    [ 2009-10-01 06:23:48,328] DEBUG - FRGVMIN : debut du traitement Lancement du thread avec le fichier : D:/temp/frgvmin0 Lancement du thread avec le fichier : D:/temp/frgvmin2 Lancement du thread avec le fichier : D:/temp/frgvmin1 Lancement du thread avec le fichier : D:/temp/frgvmin3 debut frgvmin : 6:23 debut frgvmin : 6:23 debut frgvmin : 6:23 debut frgvmin : 6:23
    ---------------------------
    UNE ERREUR A ETE RENCONTREE
    CODE RETOUR = -1073741819
    ---------------------------
    WWMDLAN005 : Procedure terminee en erreur !!!
    Invalid value for RESEXE variable
    Log du traitement incidenté :


    Exemple 2 :
    [2009-09-17 06:23:07,750] DEBUG - FRGVMIN : debut du traitement
    Lancement du thread avec le fichier : D:/temp/frgvmin0
    Lancement du thread avec le fichier : D:/temp/frgvmin1
    Lancement du thread avec le fichier : D:/temp/frgvmin3
    Lancement du thread avec le fichier : D:/temp/frgvmin2
    debut frgvmin : 6:23
    debut frgvmin : 6:23
    debut frgvmin : 6:23
    debut frgvmin : 6:23
    ---------------------------
    UNE ERREUR A ETE RENCONTREE
    CODE RETOUR = 143
    ---------------------------
    WWMDLAN005 : Procedure terminee en erreur !!!
    ---------------------------------------------------------------
    REPONSE des MAINTENANCES
    --------------------------------------------------------------

  2. #2
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Une erreur qui se produit uniquement en production, aléatoirement, et jamais deux fois de suite, c'est soit de la ressource externe indisponible, soit du multithreading!

    Après il faudrait voir comment est gérée la variable de retour de votre programme java.
    Est-ce fixe (0 ou 1) ou est-ce que ça provient d'un sous-programme?
    Est-ce une variable locale ou une variable statique?

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Merci pour votre réponse.

    le code retour est valorisé en dur à '1' dans le code J2EE en cas d'exception.
    S'il s'agit d'un problème multithread, cela veut-il dire que nous ne catchons pas toutes les exceptions alors ? Il doit y avoir une exception non gérée ?

  4. #4
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Il n'y a que trois moyens de sortir d'une fonction en java:
    - renvoyer une valeur (éventuellement ignorable si le type de retour est void).
    - renvoyer une exception.
    - Faire un System.exit()

    Comment la valeur de retour est-elle passée de la fonction au traitement dollaru?
    S'agit-il du retour d'une fonction ou d'un System.exit()?

    Pour les exceptions l'idéal serait quand même d'avoir accès aux logs de java pour vérifier si oui ou non c'est une exception qui n'est pas gérée.
    Après vérification sur google, le code -1073741819 a l'air connu comme code de retour sur java web server et correspondrait effectivmeent à une exception non catchée.

    Sans pouvoir débugger ça va etre chaud pour savoir à quelle exception ça correspond...

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Le retour se fait de la façon suivante :

    retour = batch.performJob(lstParam);
    System.exit(retour.getCodeRetour());
    }


    Retour est initialisé à Null avant l'execution du traitement.

  6. #6
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Salut,
    il faudrait voir le détail de ce que fait le batch pour etre sur que ce n'est pas lui qui renvoie ces deux valeurs.

    D'après ce que j'ai vu en regardant rapidement, le code erreur 143 pourrait signifier que le processus java a été killé:
    http://forums.sun.com/thread.jspa?threadID=5136911

    je ne sais pas par contre si c'est le même problème. Sans passer par un debug pour savoir s'il y a une exception qui est lancée, c'est chaud!

Discussions similaires

  1. Traitement batch avec wamp
    Par romu92 dans le forum Langage
    Réponses: 5
    Dernier message: 24/07/2009, 17h07
  2. Afficher un message d'attente dans un traitement Batch
    Par rollingboy dans le forum Windows
    Réponses: 0
    Dernier message: 01/02/2008, 20h56
  3. Réponses: 2
    Dernier message: 26/10/2006, 14h10
  4. [MySQL] Comment ecrivez-vous vos traitements batch
    Par ouioui2000 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/10/2005, 15h36
  5. [Traitement batch]lancer un traitement independant des users
    Par Wessim dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/06/2005, 20h43

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