# Wie statisch ist static in einem Webserver?



## kurellajunior (15. Mai 2008)

Hallo,

Ich habe ein Bibliothek, die ich in mehreren Webapplikationen einsetze. Diese Bibliothek enthält lassen mit statischen Methoden und Attributen. (z.B. Singletons)

Lädt jetzt jede Webanwendung, die diese Bibliothek verwendet eine eigene Klasse in die VM oder teilen sich alle Webanwendungen diese eine Klasse.

Die Bibliothek wird mit jeder Anwendung separat deployed.

Einer eine Idee oder einen Hinweis, wo ich das nachlesen kann?

Jan


----------



## maki (15. Mai 2008)

Die frage lautet: Werden alle Webapps vom selben Classloader geladen?

Oft ist dies zu verneinen, d.h. wenn jede WebApp ihren ClassLoader hat (imho Standardverhalten), kann jede WebApp seine unabhängige Instanz des Singletons haben.

Ja richtig, mehrere Instanzen eines Singletons... *g*


----------



## kurellajunior (15. Mai 2008)

maki hat gesagt.:
			
		

> Die frage lautet: Werden alle Webapps vom selben Classloader geladen?


Danke für die richtige Frage. Das hilft schonmal weiter.

Nun die Überlegung, gibt es eine Möglichkeit dies zu ermitteln.
Also wo sind die Einstellmöglichkeiten bei Tomcat und Glassfish dafür?
Oder sind das gar VM-Parameter...


----------



## maki (15. Mai 2008)

Bei Tomcat sollte es Standardmässig so sein, wichtig ist, dass die jars (so wie von dir vorgesehehen) in deiner WebApp sind (WEB-INF/lib) und nicht im shared- oder common- oder gar server- /lib Verzeichniss.


----------



## kurellajunior (15. Mai 2008)

maki hat gesagt.:
			
		

> Bei Tomcat sollte es Standardmässig so sein, wichtig ist, dass die jars (so wie von dir vorgesehehen) in deiner WebApp sind (WEB-INF/lib) und nicht im shared- oder common- oder gar server- /lib Verzeichniss.


Das bedeutet anders herum, wenn ein solches Verhalten gewünscht wird, dann gehören diese Bibliotheken in das server-/lib Verzeichnis. Danke vielmals, besser als Aspirin


----------



## maki (15. Mai 2008)

Denke ja, hatte den Fall aber noch nicht und versuche ihn auch zu vermeiden 

Ausser natürlich bei ContainerManaged JNDI DataSources, da kommen zB. die MySql Treiber dahin, wo der Server (nicht die Anwendung) ihn erwartet, aber in diesem Fall haben meine Anwendungen keinen Bedarf mehr die jar/Klassen daraus zu verwenden.

Hab gerade bei der Suche herausgefunden, dass die Servlet Spec. das Classloader verhalten vorschreibt.


----------

