2013-07-09 14 views
11

Czy zmienne statyczne java są wspólne dla wszystkich sesji korzystających z tej samej aplikacji webapp lub czy każda sesja otrzymuje własną wersję statycznych zmiennych?Tomcat: Java Static Variable Scope, Application lub session wide?

Po drugie, czy Tomcat utworzył nowy zestaw zajęć dla każdej sesji lub tylko jeden zestaw dla całej aplikacji internetowej?

+0

statyczne są na poziomie klasy, będą one tworzone tylko wtedy, gdy posiadacz klasa jest ładowany .. nie należą one do obiektów – nachokk

+0

Co prawda oznacza przez sesję? Sesja HTTP? To tylko obiekt, nie ma nic wspólnego ze statycznymi zmiennymi/ładowaniem klasy. –

+0

Myślę, że chodziło o prośbę, a nie sesję – malhal

Odpowiedz

14

Tomcat tworzy jedną ClassLoader dla każdej aplikacji internetowej, tj. Pliku wojennego lub kontekstu. Tak więc każdy Class jest ładowany jeden raz dla aplikacji internetowej. Dlatego zmienne statyczne są udostępniane w wielu sesjach i żądaniach.

Referencje:

3

Zmienne statyczne są udostępniane w sesjach. Należy zachować ostrożność, używając zmiennych statycznych.