web.xml listener i cron4j

Zastanawiałem się dziś jak zrobić by w mojej webowej aplikacji jakiś kod wykonywał się po załadowaniu aplikacji (np scheduler który co określony czas coś tam robi)

Rozwiązanie okazało się bardzo proste:

w pliku web.xml definiujemy listener:

[xml]
<listener>
<listener-class>pl.kedziorski.xyz.Cron</listener-class>
</listener>
[/xml]

No i klasa w której sobie nasłuchujemy deploy’u alikacji:

[java]
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class Cron implements ServletContextListener {

public void contextInitialized(ServletContextEvent sce) {
//TODO startujemy
}

public void contextDestroyed(ServletContextEvent sce) {
//TODO kończymy
}
[/java]

Pewnie większość z was wiedziała jak to osiągnąć – ale może komuś się przyda ;-)

Swoją drogą jeśli chodzi o realizacje CRONa to znalazłem fajną biblioteczkę: cron4j
Nie za duża i w zasadzie dostarcza tego co potrzeba – Możemy definiować zadania w sposób podobny jak w linuxowym cron’ie.
Można też zmieniać „częstotliwość” dla już rozpoczętych zadań.

Zadanie które ma być wykonywane przez naszego CRONa dodajemy w ten sposób:
[java]
Scheduler s = new Scheduler();
s.schedule("* * * * *", new Runnable() {
public void run() {
//TODO Co minute
}});
s.start();
[/java]

Więcej info na stronie dokumentacji projektu.

2 komentarze to “web.xml listener i cron4j”

You can leave a reply or Trackback this post.
  1. Lukasz - 28-03-2011

    Quartz i działa ;-)

  2. Kędzior - 28-03-2011

    A no działa :)

    Dla nie wtajemniczonych – Łukasz próbował kilka dni temu wstawić komentarz z alternatywą dla cron4j: Projektem Quartz: quartz-scheduler.org no i niestaty nie dało się dodać komentarza przez wadliwą captche :)
    Ale wszystko już poprawione :)

    Raz jeszcze dzięki za bug report :)

Leave a Reply

Your email address will not be published.