2012-08-13 5 views
1

J'utilise une minuterie pour exécuter un travail Cron dans un serveur Tomcat, il s'exécute au démarrage et attend le nombre de minutes que j'attribue. En ce moment, je l'attribue à courir toutes les 24 heures.Cron Job s'exécutant à minuit tous les jours

configuration web-xml:

<env-entry> 
    <description>Minutes to Parse - 1440 minutes = 1 day</description> 
    <env-entry-name>Minutes</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>1440</env-entry-value> 
    </env-entry> 

Cron configuration Job:

private void startScheduler() { 
     try { 
      timer.schedule(new TimerTask() { 
       public void run() { 
        scheduleParse(); 
        //timer.cancel(); 
       } 
       private void scheduleParse() { 
        notificaciones(); 
        System.out.println("Lo esta haciendo"); 
       } 
      }, 0, this.minutes * 60 * 1000); 
     } 
     catch (Exception e) { 
     } 
    } 

Mais je dois ma fonction à courir à minuit tous les jours et par la façon dont nous le faisons, il est en cours d'exécution toutes les 24 heures en prenant comme référence l'heure à laquelle le déploiement a été effectué. Par exemple, si nous déployons notre application Web à 10 heures aujourd'hui, elle fonctionnera tous les jours à 10 heures.

J'ai trouvé une solution, mais je veux savoir s'il y en a une meilleure. L'intervalle de temps sera toutes les 60 minutes ... si l'heure actuelle est 12 heures, le processus sera fait. Si ce n'est pas le cas, rien ne sera fait.

Existe-t-il une meilleure solution pour cela?

Répondre

3

Je pense que je serais tenté d'utiliser le logiciel de planification de votre environnement serveur pour déclencher le travail, plutôt que d'essayer de gérer la planification vous-même. Si le thread de votre planificateur meurt pour une raison quelconque, vous ne réexécuterez jamais le travail sans avoir à redémarrer le serveur d'applications.

Sous Unix, vous pouvez utiliser cron tabe pour déclencher le travail. Un éventail d'outils plus sophistiqués existe sur Unix et Windows, mais même cron devrait vous donner le type de contrôle que vous recherchez.