Cykl życia serwletu i ich uruchamianie wraz ze startem serwera

Cykl życia serwletu

Umiemy już używać serwletów, ale dalej nie wiemy co dzieje się „za sceną” – kiedy serwlet jest tworzony, a kiedy jego obiekt jest niszczony. Życie serwletu można podzielić na kilka faz:

Przyjrzymy się wywołaniom tych metod. Najpierw przygotuję odpowiednio klasę serwletu:

Po kilkukrotnym wyświetleniu strony (dokładnie tej samej tabelki z poprzedniego artykułu) w logach serwera widać dokładnie co się dzieje:

Uruchamianie serwletu wraz ze startem serwera

W aplikacjach webowych bardzo często funkcjonują scheduler’y. Kod odpowiedzialny za uruchomienie cykliczne uruchamianie zadań nie powinien być uzależniony od konkretnego żądania, a jedynie od startu serwera. Pokażę teraz jak poinformować kontener serwletów aby uruchomił konkretne serwlety w momencie ładowania aplikacji, co więcej – uruchomił je w zadanej kolejności. Najpierw stworzę trzy serwlety – Load1, Load2, Load3 i przesłonię w nich metodę init() w następujący sposób.

Serwlety po prostu wyświetlają swoje numery w trakcie inicjacji (a będąc ścisłym - w momencie złączenia klasy serwletu z adresem URL). Poza tym, nie wprowadzałem w nich żadnych innych modyfikacji. Aby poinformować kontener serwletów o tym, że powyższe trzy mają zostać stworzone przy starcie serwera konieczna będzie edycja pliku web.xml.

W tagu <servlet> umieszczam tag <load-on-startup>, który określa kolejność uruchamiania serwletu przy starcie serwera. Aby wszystko zadziałało prawidłowo wartość tagu <load-on-startup> musi być większa lub równa 0. W przeciwnym wypadku informacja zostanie przez kontener zignorowana.

Konfiguracja pozostałych serwletów:

Oraz logi serwera w trakcie restartowania aplikacji:

Ten artykuł jest elementem poniższych kursów: