Gibt es Gründe, eine Abhängigkeit in das LIB -Verzeichnis eines Webservers zu setzen, anstatt sie in die Kriegsdatei aufzunehmen?

StackOverflow https://stackoverflow.com/questions/1438738

Frage

Wenn ich ein Abhängigkeitsjar für meine Anwendung habe, ist es besser, sie in das Kriegsdateien LIB -Verzeichnis zu platzieren oder in das Global Application Server (wie Tomcat) LIB -Verzeichnis zu platzieren? Was gewinnen ich, indem ich einen Ansatz gegenüber einem anderen verwende?

Diskspace fällt mir ein, aber wir leben in einer Zeit, in der Diskspace billig ist. Gibt es einen Speicherverbrauchsunterschied? Kann jemand mit mehr Erfahrung als ich die Vor- und Nachteile beider Optionen auflisten?

War es hilfreich?

Lösung

Im Allgemeinen ist es viel besser, die Krieg in sich geschlossen zu haben, sodass Sie sich nicht auf die Containerkonfiguration verlassen müssen. Auch die Bereitstellung erleichtert auch die Bereitstellung. Versuchen Sie also, die Bibliothek in den Krieg zu setzen, wenn Sie können.

Ich bin jedoch auf Fälle getroffen, wenn die Installation von Bibliotheken in Container sinnvoll ist. Zum Beispiel,

  1. Wir haben einige interne Bibliotheken, die von jedem WebApp verwendet werden und sie sind riesig. Wir installieren sie in Container, sodass alle WebApps dieselbe Version verwenden und auch Speicher und Diskspace speichern.

  2. In Web-inf/lib/lib-Bibliotheken sind dem Container nicht verfügbar. Wenn Sie diese in context.xml (wie in Ressourcen definierte JDBC -Treiber) verweisen müssen, müssen Sie sie in Server/LIB einfügen.

  3. Wenn Sie log4j -Protokolle von allen WebApps an dieselbe Datei senden möchten, müssen Sie Log4J -Jar in den Server/die lib. Andernfalls verwendet jeder WebApp seinen eigenen Logger.

Andere Tipps

If you want to use the container's resource management capabilities -- e.g. connecting to a SQL database and providing a JNDI lookup and connection pool for it -- then the container software itself will need access to the libraries and drivers to manage the resources.

Otherwise you probably don't want to install them in the server /lib directory and assume they are there and will work, as different web applications might have subtly different version requirements.

For a in-depth description of the class loader hierarchy implemented by Catalina, you should check Tomcat's Class Loaders HOW-TO. This will help you to understand when to make jars available to the container, to all webapps, to a single webapp only... and where to put them.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top