104 votes

Comment exécuter une tâche d'arrière-plan dans une application Web basée sur servlet ?

J'utilise Java et je veux garder un servlet en cours d'exécution dans mon application, mais je n'arrive pas à le faire. Mon servlet dispose d'une méthode qui donne des comptes de l'utilisateur à partir d'une base de données sur une base quotidienne ainsi que le compte total des utilisateurs à partir de l'ensemble de la base de données. Donc, je veux que le servlet fonctionne continuellement pour ça.

4voto

Twister Points 538

Je suggère d'utiliser une bibliothèque comme quartz afin d'exécuter la tâche à intervalles réguliers. Que fait vraiment le servlet ? Il t'envoie un rapport ?

2voto

Rookie Points 1853

1voto

Ali Alimohammadi Points 160

Mettre en œuvre deux classes et appeler startTask() en main.

public void startTask()
{
    // Create a Runnable
    Runnable task = new Runnable() {
        public void run() {
            while (true) {
                runTask();
            }
        }
    };

    // Run the task in a background thread
    Thread backgroundThread = new Thread(task);
    // Terminate the running thread if the application exits
    backgroundThread.setDaemon(true);
    // Start the thread
    backgroundThread.start();
}

public void runTask()
{
    try {
        // do something...         
        Thread.sleep(1000);

    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

0voto

Jeryl Cook Points 112

Dans un système de production qui peut avoir plusieurs conteneurs non-jee en cours d'exécution. Utilisez un planificateur d'entreprise anot comme le planificateur Quartz qui peut être configuré pour utiliser une base de données pour la tâche maamgememt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X