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

API standards et tierces Java Discussion :

[Quartz] Passage de paramètre


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut [Quartz] Passage de paramètre
    Bonjour!
    J'ai quelques soucis avec Quartz :

    Si je veux lancer un job je dois avoir une classe contenant la méthode execute, mais si je veux passer des paramètres à ce Job comment dois-je faire?
    Je ne peux pas surcharger la fonction execute puisque son appel est implicite...

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut
    Salut,

    Cette méthode "execute" pour être plus précis est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void execute(JobExecutionContext context)
    et sur cet argument tu peux appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JobDataMap getMergedJobDataMap()
    JobDataMap getJobDetail().getJobDataMap();
    Et tu peux la remplir par le fichier xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <job-data-map>
      <entry>
        <name>Key</name>
        <value>Val</value>
      </entry>
    </job-data-map>
    mais ça je suis moins sur il faut aller vérifier


    Tout ça est dans la doc quartz.
    http://www.opensymphony.com/quartz/

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut
    Bonsoir!
    Merci d'avoir répondu.

    J'avais déjà vu l'utilité des maps mais ce que j'aimerais faire c'est ouvrir une connexion avec une base de données avant de scheduler mes jobs sur cette même base.
    L'intérêt est de n'ouvrir qu'une seule fois la connexion.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut
    Ah d'accord, je pense que tu dois aller jeter un oeil du coté des StatefulJob, mais je ne sais pas trop comment ça fonctionne désolé.

    Bonne chance

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut
    Merci pour l'info!
    Je reposte si je trouve!

    A bientot!

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 17
    Par défaut Solution
    Voila j'ai trouvé la solution ! EN fait ça marche avec la map.
    Il suffit de créer une connection dans la classe Main et de la rentrer dans la map du Job à l'aide de la méthode put() comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Properties prop= new Properties();
    prop.load(new FileInputStream("jdbc.properties")); 
    Class.forName(prop.getProperty("jdbc.driver"));
    Connection con = DriverManager.getConnection(prop.getProperty("jdbc.url"),prop.getProperty("jdbc.user"),null);
     
    JobDetail monJob = new JobDetail("monJob", sched.DEFAULT_GROUP,MonJob.class);
     
    monJob.getJobDataMap().put("Connection",con);
    Après on peut scheduler avec le trigger, et cotés Job on retrouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void execute(JobExecutionContext context){
     
                JobDataMap data = context.getJobDetail().getJobDataMap();
                Connection con = (Connection) data.get("Connection");
    }
    Et voila!
    On récupère la connection dans l'état ou elle est! c'est à dire ouverte!


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

Discussions similaires

  1. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58
  2. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  3. [XSL] Passage de paramètres à un template
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2003, 13h28
  4. passage de paramètres
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/02/2003, 17h28
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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