Hallo Java-Community.
Ich weiß nicht, ob meine Frage nun tomcat-spezifisch ist, aber ich glaube viel mehr, dass ich eine allgemeine Verhaltensweise von Java noch nicht verstanden habe. Wäre schön, wenn ihr mir helfen könnt.
Situation: Verschiedene webapps (.war) binden eine Bibliothek von mir ein (.jar). In meiner .jar sind statische Klassenvariablen definiert. Teilen sich nun alle .war's automatisch dieselbe Variable?
Ich würde mir vorstellen, dass die JVM am Anfang merkt: Oh, Klasse noch nicht da. Wo kann ich danach suchen? Ach, dort. Okay, dann lade ich jetzt diese Bibliothek. (nun wird die statische Variable initialisiert)
Und bei den anderen Webapplikationen denkt sich die JVM: "Die Klasse ist doch schon geladen, also nehmen wir diese" - und die Applikationen nutzen damit auch dieselbe statische Variable.
Also, die erste Klasse, die bei Bedarf geladen wird, gewinnt, auch wenn Klassen mit dem selben Package sowie Namen (und ggf. anderem Inhalt!!) an anderer Stelle eingebunden werden? Und die statischen Variablen sind dann also *immer* JVM-global?
Ich hoffe, ihr versteht, was ich meine. Danke schonmal
- CMIYC
Ich weiß nicht, ob meine Frage nun tomcat-spezifisch ist, aber ich glaube viel mehr, dass ich eine allgemeine Verhaltensweise von Java noch nicht verstanden habe. Wäre schön, wenn ihr mir helfen könnt.
Situation: Verschiedene webapps (.war) binden eine Bibliothek von mir ein (.jar). In meiner .jar sind statische Klassenvariablen definiert. Teilen sich nun alle .war's automatisch dieselbe Variable?
Ich würde mir vorstellen, dass die JVM am Anfang merkt: Oh, Klasse noch nicht da. Wo kann ich danach suchen? Ach, dort. Okay, dann lade ich jetzt diese Bibliothek. (nun wird die statische Variable initialisiert)
Und bei den anderen Webapplikationen denkt sich die JVM: "Die Klasse ist doch schon geladen, also nehmen wir diese" - und die Applikationen nutzen damit auch dieselbe statische Variable.
Also, die erste Klasse, die bei Bedarf geladen wird, gewinnt, auch wenn Klassen mit dem selben Package sowie Namen (und ggf. anderem Inhalt!!) an anderer Stelle eingebunden werden? Und die statischen Variablen sind dann also *immer* JVM-global?
Ich hoffe, ihr versteht, was ich meine. Danke schonmal
- CMIYC