17 lipca 2009

Tomcat, Maven i problem z aktualizacją CSS

Ostatnio zdarzało mi się popełniać krótsze posty. Mam nadzieję, że w niedługim czasie ulegnie to zmianie. Póki co za oknem pada deszcz i trzaskają pioruny. Mam nadzieję, że po tym pogodowym katharsis powietrze będzie rześkie.
No ale wróćmy do tematu... Moją ostatnią aplikację webową deployuję pod Tomcata za pomocą Mavena i ogólnie sobie to chwalę, gdyby jeszcze nie fakt, że deployment w Javie trochę trwa. Przy mojej aplikacji i na moim sprzęcie średnio trwa to około minutę. Zauważyłem też dziwną rzecz. Dwukrotnie zdarzyło mi się, że po redeploymencie (mvn clean tomcat:redeploy) zminay w CSS nie były aktualizowane. Można to było łatwo sprawdzić za pomocą Firebuga i sprawdzenie treści pliku css. Wszelkie próby restartu kontenera servletów nie pomagały. Wiedziałem, że od strony aplikacji wszystko wygląda ok, ale problem wciąż pozostawał. Metodą prób i błędów udało mi się znaleźć pewne rozwiązanie, a wygląda ono następująco:

1. Uruchom Tomcata
2. Undeployuj aplikację: mvn tomcat:undeploy
3. Zamknij Tomcata
4. Uruchom ponownie Tomcata
5. Ponownie zdeployuj aplikację mvn clean tomcat:deploy

Teraz powinno wszystko poprawnie działać. Nie wiem czy wina leży tu po stronie Tomcata czy może plugin dla Mavena ma jakiś błąd. W każdym razie ta sekwencja czynności powoduje, że wszystko znowu poprawnie działa.

To na dzisiaj byłoby tyle. Czeka mnie jeszcze wieczorem podróż do Chojnic. Czas odwiedzić rodzinne strony. Bywajcie ;)

5 komentarzy:

Jacek Laskowski pisze...

Chojnice?! Ale numer! To również moje rodzinne strony!

A w związku z CSS, to pewnie Tomcat nie wykrywał, że wdrożono (zdeployowano w Twoim języku :)) nową wersję aplikacji i nie zostawała poprawnie inicjowana. Spóbuj kasować katalog w webapps.

koziołek pisze...

Co do tego pliku css to sprawdź czy przez przypadek nie ma on statusu HTTP304 Not changed. Przeglądaki cachują css i js rozwiązaniem jest dodanie w kodzie generującym widok do adresy css czegoś w stylu:
"moj.css?s=aktualny_czas_systemowy" w tym przypadku serwer zawsze będzie wysyłał do przeglądarki informację, że plik się zmienił i przeglądarka będzie go pobierać.

koziołek pisze...

mały update. Przed wdrożeniem warto na pliki css napuścić skrypt w perlu, który skompresuje je wycinają komentarze, dodatkowe puste linie i formatowanie.

syllepsa pisze...

@Jacek - przypominam sobie.. Rozmawialiśmy swego czasu na temat wspólnego miejsca pochodzenia na NetBeans day w Warszawie. BTW dzięki za wskazówkę.

@koziołek później podobnie mi świtało, że to może być problem z FF. Również dziękuję i zamierzam to wypróbować.

syllepsa pisze...

Jacku, pamiętam, że podczas rozmowy okazało się, że Twój tato i mój dziadek byli dyrektorami tej samej szkoły w Pawłowie. Rozmawiałeś na ten temat ze swoim ojcem? Mój dziadek nazywał się Edmund Malinowski. To tyle by było z mojej prywaty.