2008-12-18 10 views
5

Mam 2 różne aplikacje internetowe (pakiet do różnych plików wojennych), które muszą udostępniać niektóre dane za pośrednictwem pamięci podręcznej (ehcache). Chcę przetestować ten pomysł, aby sprawdzić, czy to działa.Uzyskiwanie dostępu do tego samego ehcache z 2 różnych plików wojennych

Mój pomysł polega na utworzeniu usługi, która ładuje/uzyskuje dostęp do ehcache i pakietu wewnątrz słoika. Następnie pakiet, który słoik do dwóch wojen:

  • wojnę1: ehcache-service.jar
  • WAR2: ehcache-service.jar

Czy ehcache pracy w takiej konfiguracji?

+0

Czy możesz bardziej szczegółowo opisać, co chcesz osiągnąć dzięki współużytkowanej pamięci podręcznej? – lucas

+0

Chcę go używać jako blokady rozproszonej. Mogłabym użyć bazy danych, aby wskazać, że transakcja jest w toku (ale uważam, że jest to anty-wzór). Usecase: War1 uruchamia tx, przechowuje go w pamięci podręcznej. Zapobiega to uruchomieniu tego samego tx. War2 unieważnia tx na podstawie zdarzenia zewnętrznego. – ashitaka

Odpowiedz

5

Musisz utworzyć oddzielny plik (i) ze wszystkimi klasami (i wszystkimi ich zależnościami), które wystąpienia będą buforowane, a następnie wdrożyć ten plik jar, a także plik ehcache.jar jako bibliotekę (w zależności od tego, który serwer aplikacji jest używany procedura może być inna), w przypadku Tomcat 6 oznacza to tylko skopiowanie słoików do folderu lib.

Co się dzieje, że ehcache i twoje klasy domen zostaną załadowane przez program ładujący klasy udostępniony przez wszystkie aplikacje internetowe, więc instancje będą buforowane i dostępne w pamięci.

Zależności klas domeny są ważne, dlatego powinieneś sprawdzić, czy takie podejście jest możliwe w twoim projekcie. Może również wpływać na sposób ponownego uruchamiania aplikacji internetowych.

Ponadto należy pamiętać, że pamięć podręczna i udostępnianie nie są niezbędne to samo. Pamięć podręczna to optymalizacja. Jeśli umieścisz instancję obiektu w pamięci podręcznej, może zostać eksmitowana natychmiast, jeśli na przykład pamięć podręczna nie ma wystarczającej ilości miejsca w pamięci lub konfiguracji zasad dotyczących eksmisji. Być może będziesz musiał zapoznać się z ogólnym planem korzystania z ecache.

+0

Używam programu Tomcat, więc biblioteki udostępniane przez wszystkie aplikacje internetowe przechodzą do katalogu CATALINA_HOME/common/lib. Jest bardziej skomplikowany problem, ponieważ chcę replikować pamięć podręczną na wielu serwerach klastra w klastrze. – ashitaka

+0

Podoba mi się twoje stwierdzenie "Pamięć podręczna to optymalizacja". Być może będę musiał wrócić do korzystania z bazy danych do przechowywania stanu udostępnionego, ponieważ mogę użyć poziomu izolacji SERIALIZABLE, aby zapewnić spójne odczyty/zapisy. – ashitaka

2

Problem z twoją konfiguracją polega na tym, że każda wojna zostanie załadowana oddzielną klasą ClassLoader i będą dwa wystąpienia usługi ehcache - każda aplikacja internetowa ma własną kopię usługi. Możesz wdrożyć swoją usługę buforowania jako usługę sieciową (na przykład) i używać jej z war1 i war2.

Powiązane problemy