Tomcat/JSDK i cache'owanie

0

Witam :)

Problem jest następujący: zacząłem bawić się w pisanie servletów w Javie - kompiluję je i podpinam pod Tomcata. Mapuję wszystko za pomocą web.xml, działa wszystko pięknie, tylko... cache'owanie gotowych, raz odpalonych servletów jest tak silne i uparte, że po przekompilowaniu kodu javy do nowej klasy dalej uruchamia tą starą ;). A nie ma przecież sensu restartować co chwilę Tomcata dlatego, że wrzucam nowy plik *.class jako servlet.

Pogooglowałem trochę... metody w stylu init-paramu "development"="true" albo ustawianiu "caching"="false" w web.xml nie dają żadnego rezultatu, na co zresztą też skarżyli się inni.

Aha - próbowałem wobec tego przesiąść się na oryginalny serwer z Java Servlet Development Kit (JSDK). Jest tam trocha inna struktura configów (pliki .properties zamiast web.xml), też udało mi się skonfigurować i uruchomić, ale... problem jest ten sam - cache'uje na pałę i na siłę, trzeba zrestartować serwer żeby przestał :P

Ktoś ma pomysł lub zetknął się ktoś kiedyś z czymś takim? :)

0

To jest prawidłowe zachowanie. Serwer nie cache'uje servletu tylko tworzy classloader, który ten servlet przetrzymuje i do pÓÓÓÓki nie ubijesz aplikacji to nie nastąpi przeładowanie.
Rozwiązania są dwa:

  • proste to pakowanie servletów w pliki war i deployment warów. Serwer nasluchuje czy cos się zmieniło w pliku war i w razie czego przeładowuje aplikację.
  • Wykorzystanie technologii OSGi, która odpowiednio podmieni klasy. Może być tu eclipsowy Equinox. Troche trzeba się pobawić, ale rezultaty są super.
0

Mozesz sprobowac usunac katalog tomcat/work - tam sie znajduja skonpilowane zrodla

1 użytkowników online, w tym zalogowanych: 0, gości: 1