W poprzednim poście XML definiował mamy 4 powiązane ze sobą obiekty.
Zaczniemy od końca :)
1. Scheduler:
Jak można się domyślać, do zarządzania wszystkimi zdarzeniami potrzebujemy jednego z nich. Jest to obiekt 'scheduler' klasy org.springframework.scheduling.quartz.SchedulerFactoryBean. Tak więc dzięki temu, że w bibliotece Spring 2.0 mamy wsparcie dla Quartz możemy go tutaj wykorzystać.
Ponieważ chcemy, żeby zarządzanie zdarzeniami było włączone automatycznie po starcie aplikacji i czekało na zakończenie zadań przed zamknięciem, to ustawiamy atrybuty autoStartup i waitForJobsToCompleteOnShutdown na true.
Właciwosć 'triggers' tego obiektu służy do zdefiniowania samych zdarzeń.
U nas lista ta zawiera odwołanie tylko do jednego obiektu, dummyCronTrigger który jest zdefiniowany wyżej.
2. dummyCronTrigger - wyzwalacz zdarzenia.
Ponieważ chciałem, żeby zdarzenie było wywoływane co 10 sekund, musiałem użyć triggera bazującego na wyrażeniu polecenia Linuxowego cron.
W tym przypadku wygląda ono tak: 0/10 * * * * ?
Właściwość jobDetail ustawiamy na dummyJobDetail, czyli obiekt, który definiuje ma konkretne zadanie.
3. dummyJobDetails - służy tylko do wskazania metody obiektu, który wykona nasze zadanie.
4. outdatetProjectsMailSender to właściwy obiekt wykonujący nasze zadanie.
Przy implementacji zadania należy zwrócić uwagę, że ta metoda nie powinna rzucać wyjątków innych niż JobExecutionException.
Na koniec link do tutoriala, który przydał mi się do zrozumienia tego tematu:
http://www.lucianofiandesio.com/javatales/qtzfuse.html
Pokazywanie postów oznaczonych etykietą threads. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą threads. Pokaż wszystkie posty
wtorek, 27 listopada 2007
poniedziałek, 29 października 2007
Shutdown Hook
Jak się okazuje, można w miarę łatwo przechwycić w Javie zdarzenie zamykania maszyny wirtualnej. Wystarczy dodać w taki sposób obiekt dziedziczący z klasy Thread (u mnie nazywa się po prostu ShutdownThread):
Runtime.getRuntime().addShutdownHook(new ShutdownThread());
To co ma być zrobione zamieszczamy w metodzie public void run().
Tak więc nasz obiekt jest wątkiem, który jest zainicjalizowany przez konstruktor, ale nie wywołano start();
Runtime.getRuntime().addShutdownHook(new ShutdownThread());
To co ma być zrobione zamieszczamy w metodzie public void run().
Tak więc nasz obiekt jest wątkiem, który jest zainicjalizowany przez konstruktor, ale nie wywołano start();
Subskrybuj:
Posty (Atom)
