Question

nous avons besoin de lancer une fonction périodique dans l'application Java Web. Comment appeler la fonction d'une classe périodiquement? Est-il possible que la fonction appeler quand un événement a eu lieu comme une charge élevée dans le serveur et ainsi de suite. ce qui est crontab? Est-ce que le travail périodiquement?

Était-ce utile?

La solution

Pour appeler quelque chose périodiquement, consultez TimerTask

Autres conseils

Si vous avez besoin quelque chose que vous pouvez utiliser plus robuste Quartz

En ce qui concerne crontab est l'outil de planification sur les machines Unix.

Pour appeler des méthodes lorsque le serveur a une charge élevée, vous avez au moins deux approches possibles. Votre serveur d'applications peut avoir des crochets de gestion qui vous permettent de surveiller son comportement et prendre des mesures progrommatic. Alterntaively vous avez une certaine capacité de surveillance du système (par ex. Tivoli ou OpenView) et génère des « événements », il ne devrait pas être trop difficile de fournir de tels événements comme (par exemple) des messages JMS et de les choisir votre serveur vers le haut.

Cependant, vous voudrez peut-être expliquer un peu plus sur ce que vous voulez atteindre. beahviour d'application adaptative peut être assez difficile à obtenir le droit.

Si vous voulez exécuter quelque chose périodiquement, ne le faites pas dans le serveur Web. Ce serait une approche très mal l'OMI. Il est préférable d'utiliser à la place cron, si vous êtes sur un système d'exploitation Unix. serveurs Windows offrent des fonctionnalités similaires.

  

nous avons besoin de lancer une fonction périodique   dans l'application Java Web

(1) Regardez donc dans votre descripteur de déploiement (web.xml) définir un écouteur au démarrage au démarrage.

  

Comment appeler la fonction d'une classe   périodiquement?

(2) Créer un minuterie dans l'auditeur.

  

Est-il possible que la fonction appel   quand un événement a eu lieu comme une charge élevée   dans le serveur et ainsi de suite

(3) et exécuter des threads pour vérifier les conditions du système qui sont accesible avec Java, même système d'exécution progs (temps de fonctionnement, etc.) et analyser la sortie.

crontab pourrait être un moyen, mais l'exécution de Java démarre une autre machine virtuelle Java et qui est vraiment la chose à chaud dans des conteneurs de servlet. Toutes les exécutions dans la même machine virtuelle Java

Ne pas oublier java.util.concurrent - il a beaucoup de classes pour la programmation, par exemple ScheduledThreadPoolExecutor, si vous avez besoin de plus d'une minuterie simple.

http: / /java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

Il y a aussi un rétroportage à Java 1.4: http://backport-jsr166.sourceforge.net .

Si vous utilisez déjà Spring, vous pouvez jeter un oeil au cadre de l'exécution des tâches de printemps - en utilisant @Scheduled et @Async des méthodes annoter comme tâches et mettre en œuvre la fonctionnalité dans un processeur qui délègue le travail réel à un travailleur, comme décrit dans:

http: // Blog .springsource.com / 2010/01/05 / / tâche-ordonnancement-en-simplification ressort 3-0

L'avantage est que vous pouvez définir des minuteries en utilisant une syntaxe semblable Cron dans votre contexte de printemps et vous n'avez pas besoin quelque chose de spécial pour mettre en place des tâches, il est également bien intégré dans des applications Java EE et devrait bien jouer avec les serveurs web (qui se visse sur mesure ont tendance à ne pas faire toujours).

  

Comment appeler la fonction d'une classe périodiquement?

Il existe plusieurs solutions: minuterie , une implémentation Java comme cron cron4j , Quartz , ou même le EJB API minuterie . Le choix d'un ou l'autre dépend fortement du contexte: le type d'application, les technologies utilisées, le nombre d'emplois, etc

.
  

Est-il possible que la fonction appeler quand un événement a eu lieu comme une charge élevée dans le serveur et ainsi de suite

Vous pourriez peut-être utiliser JMX dans vos travaux pour accéder et contrôler des informations et déclencher une action sous une condition spécifique. Mais ce qui est plus un mode de traction, non événement basé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top